【发布时间】:2022-06-28 23:07:09
【问题描述】:
我有一个带有正在显示的 useState 的父组件。我想要做的是让子组件能够更新此状态以更改父组件显示的内容。我目前有以下:
function Parent() {
const [myWindow, setMyWindow] = useState(null)
useEffect(() => {
setMyWindow(<Child updateWindowFunc={() => setMyWindow(someNewWindow)} />)
}, []}
return (
<div>
{myWindow}
</div>
)
}
function Child({updateWindowFunc}) {
//Somehow calls updateWindowFunc
}
(请注意,我的实际代码设置有所不同,所以不要像一般概念那样介意语法。)
我发现我可以让 myWindow 的值发生变化,但实际显示并没有显示任何变化。我尝试在更改后强制重新渲染,并添加一个 useRef 来显示 useRef.current,但似乎没有更新实际正在渲染的窗口。
我做错了什么?
编辑: 我发现如果我切换到不同类型的组件它可以工作,但如果它只是同一组件的不同元素,那么就没有重新渲染。我一直在使用 React.createElement(),所以我认为“对象”是不同的,但也许我只是误解了它是如何工作的。
【问题讨论】:
标签: javascript node.js reactjs react-hooks