【问题标题】:useState element not rerendering when triggered by an event handler in a child component由子组件中的事件处理程序触发时,useState 元素不会重新呈现
【发布时间】: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


    【解决方案1】:

    您能否提供更多详细信息或包含更多信息的工作\不工作代码示例?

    目前很难获得,因为这没有任何意义,因为您可以像下面那样渲染它,并且该代码将与您尝试运行的代码具有相同的结果

    function Parent() {
    
        return (
            <div>
                <Child />
            </div>
        )
    
    }
    

    所以为了更好地理解和解决问题\寻找不同的方法,请提供更多详细信息

    【讨论】:

      猜你喜欢
      • 2021-01-12
      • 2018-04-10
      • 2012-10-01
      • 2020-06-02
      • 2020-10-29
      • 2020-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多