当 React 上下文状态更新时,如果它的上下文没有被使用,它是否会强制重新渲染子组件?

阿基米德图拉真

在我真正深入研究之前问一下,因为这将重写一堆导航逻辑。

我可以有以下结构,其中我有一个列表屏幕和一个编辑屏幕,如下所示

<DataProvider>
  <Navigator>
    <Screen name="list" component={ComponentThatUseData} />
    <Screen name="list different layout" component={ComponentThatUseData} />
    <Screen name="list another different layout" component={ComponentThatUseData} />
    <Screen name="edit" component={ComponentThatDoesNotUseData}>
  </Navigator>
</DataProvider>

如果DataProvider有一个useState并且我更新它会导致编辑屏幕的重新渲染,即使useContext没有调用?由于重新渲染会导致我的编辑表单失去焦点。

约书亚布斯

是的,根据我在 React Documentation 上的理解,React Context 的一个警告是,当 Context 中的状态更新时,孩子会受到影响,我认为这是因为 Context Provider 仍然是一个 React 组件。

React 上下文警告 - 部分

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当上下文使用者中的任何状态发生变化时,React是否会重新渲染所有组件?

React(+ Typescript)组件在更新上下文时不重新渲染

React上下文需要2个状态更新,以便使用者重新渲染

React hooks & Context:在带有 useEffect 的子组件中使用上下文时出错

在组件中使用 React 上下文

React上下文值没有更新

使用数据库数据更新上下文后,React 'useContext' 钩子不会重新渲染

React上下文中的功能和重新渲染

上下文状态更改后,React Native不会重新渲染

是否可以在没有PropTypes的情况下使用React的上下文?

如何通过 React 上下文更新状态?

在React上下文状态下更新单个项目

React - 状态不通过上下文更新

更新来自类组件的React上下文值

当提供程序组件的父状态更改时,为什么不能更新子组件中的值(带有react上下文)?

React Context API,更新上下文

使用 React 上下文将对象传递给 context.provider 的值时如何避免重新渲染

使用React上下文维护用户状态

在单独的文件中具有React上下文,无法使组件不重新呈现

我如何使用上下文在React中的类和功能组件之间共享状态?

使用 TypeScript、功能组件和钩子在 React 上下文提供程序中设置状态

FlowType React上下文

React.js:更新多个组件共享的上下文API时出现问题

TypeError:使用React上下文时对象不可迭代

当使用this.props.children渲染子代时,React上下文未定义

值未在react中使用上下文传递给子组件

React 上下文提供者在上下文消费者呈现后更新状态

使用组件作为道具时,React上下文不会传输

React Typescript-react组件类中的上下文