【问题标题】:Can React.context be used to share a common object?React.context 可以用来共享一个公共对象吗?
【发布时间】:2019-06-13 11:54:58
【问题描述】:

所以我一直在阅读有关使用反应上下文来避免钻取道具的信息。一个基本的例子是有一个组件提供一个值,该值本身保持在组件状态:

<ThemeContext.Provider value={this.state.shared, updateMyState}>

以及使用该值的消费者。

我可以共享导出列表的值,还是应该提供 Provider 的组件始终引用其状态或静态值?

这就是我的意思:

文件 ./list:

export const list = [];
export const updateList = (val) => list.push(val);

文件 ./provider:

import Provider from './provider'
import {list, updateList} from ./list

{Provider, Consumer} = React.createContext();
export ProviderComponent = () => 
   <Provider value={list, updateList}>
      <children>
   </Provider>
}

【问题讨论】:

  • 如果我理解您的要求正确 - 您可以向 Provider 添加函数/方法,然后引用处于状态的那些以将它们传递给 Consumer。
  • @Colin 你是说上面的例子不正确,我应该先将列表的引用存储在ProviderComponent 中?列表对象是我问题的核心

标签: reactjs react-context


【解决方案1】:

是的,你可以。如果您担心多次导入模块会创建列表对象的多个实例,那么当您执行 import { a, b } from './file 之类的导入时,./file 只会被引用一次 (Check out this stackoverflow answer)。

我觉得你的语法有点不对,应该是

<Provider value={{ list, updateList }}>

【讨论】:

    猜你喜欢
    • 2019-12-03
    • 1970-01-01
    • 2012-01-16
    • 2011-08-27
    • 2014-10-16
    • 2011-04-12
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多