我正在通过一个数组进行映射,该数组为数组中的每个项目返回 JSX 组件。在运行时我想传递值。如果它们与单个项目的值匹配,则它们的单个组件将被修改。
我试图找到一种方法来实现这一点,而无需重新渲染所有组件,目前发生这种情况是因为道具发生了变化
我曾尝试在类组件中使用shouldComponentUpdate,但似乎这样我只能将 prevState 和 prevProps 与相应的更改进行比较。我在 Map 函数中进一步考虑了 useMemo,它不起作用,因为它嵌套在 map 函数中。
const toParent=[1,2,4,5]
父组件:
function parent({ toParent }) {
const [myNumbers] = useState([1,2,3,4, ..., 1000]);
return (
<div>
{myNumbers.map((number, index) => (
<Child toChild = { toParent } number = { number }
index= { index } key = { number }/>
))}
</div>
)
}
子组件:
function Child({toChild, number, index}){
const [result, setResult] = useState(() => { return number*index }
useEffect(()=> {
if (toChild.includes(number)) {
let offset = 10
setResult((prev)=> { return { prev+offset }})
}
}, [toChild])
return (
<div style={{width: result}}> Generic Div </div> )
}