【发布时间】:2021-12-22 05:58:19
【问题描述】:
子组件接受一个道具并进行计算以显示价值。在第一次加载时,它确实可以工作,但是当父级确实传递新值时,没有任何更新。
家长:
function Parent(){
const [v, setV] = useState(0);
const addNewValue = () =>{
setV(generateValue({type:'mv', gId: 3})); // generateValue is a function that returns an integer on each call
}
return (<div>
<Child value={v}/>
<Button onClick={addNewValue}>Calculate</Button>
</div>)
}
Child.js
function Child({value}){
const [baseValue, setBaseValue] = useState(value);
useEffect(()=>{
const calculate = calculate(baseValue);
setBaseValue(calculate);
},[baseValue]);
return (<div>
<Text>{baseValue}</Text>
</div>)
}
【问题讨论】:
-
@ArvindMaurya 他们不需要强制重新渲染。道具更改会自动触发重新渲染,所以如果他们没有得到这种行为,他们很可能违反了 React 的规则。但是,我相信他们会重新渲染;只是没有达到他们的预期。
标签: reactjs