我有两个组成部分。
function Parent(props){
const handleClick = () => {
console.log(props.stateA);
};
return <div><Child text={stateB} handleClick={handleClick} /></div>
}
const mapStateToProps = (state) => {
return {
stateA: state.stateA // stateA will be changed somewhere else
stateB: state.stateB
}
};
export default connect(mapStateToProps)(Parent);
function Child(props) {
return <div onClick={props.handleClick}>{props.text}</div>
}
export default React.memo(Child,(prev, next) => {
return prev.text === next.text
});
我的问题是,当stateA更改到某处时,单击Child
将记录先前的stateA。我无法访问最新的stateA。
您可以看到,我不想在stateA更改时Child
重新呈现,它仅在stateB更改时才重新呈现。但是我想在单击Parent
时访问Child
中最新的stateA。
有什么方法可以解决这个问题?
答案 0 :(得分:0)
如果Parent
组件是功能组件,则可以这样使用
const [valueA, setValueA] = useState('')
useEffect(() => {
setValueA(props.stateA)
},[props.stateA])
console.log(valueA) // latest Value of stateA
return <div><Child text={stateB} handleClick={handleClick} /></div>
我希望它对您有用。
答案 1 :(得分:0)
您应该可以访问props.stateA
没问题
const handleClick = () => {
console.log(props.stateA);
};
因为您在handleClick
中访问了父母的道具。因此,如果props.stateA
过时,那么合理的结论是父母没有收到最新的道具。我们可以看到您如何更新道具/状态吗?