在React中,如果一个具有任意多个子组件的父组件想要通过字符串id来更新选定的子组件,可以通过以下步骤实现,而不使用useRef:
以下是一个示例代码:
import React, { useState } from 'react';
function ParentComponent() {
const [selectedId, setSelectedId] = useState(null);
const updateSelectedId = (id) => {
setSelectedId(id);
};
return (
<div>
{children.map((child) => (
<ChildComponent
key={child.id}
id={child.id}
isSelected={child.id === selectedId}
updateSelectedId={updateSelectedId}
/>
))}
</div>
);
}
function ChildComponent({ id, isSelected, updateSelectedId }) {
const handleClick = () => {
updateSelectedId(id);
};
return (
<div onClick={handleClick} style={{ background: isSelected ? 'yellow' : 'white' }}>
{id}
</div>
);
}
在上述示例中,父组件ParentComponent通过遍历子组件列表,并为每个子组件添加了一个唯一的key属性和一个onClick事件处理函数。当子组件被点击时,会调用updateSelectedId函数,并传递子组件的id作为参数。父组件中的selectedId状态变量会被更新,然后传递给子组件。子组件根据isSelected属性来判断是否被选中,并进行相应的样式更新。
这种方法可以实现通过字符串id来更新选定的子组件,而不需要使用useRef。
领取专属 10元无门槛券
手把手带您无忧上云