所以,我有ClientContext的默认值:
export const defaultContext = {
test: "Hello"
};
export const UserApplicationContext = React.createContext(defaultContext);
然后在我的子组件中,我正在更新此值:
contextDefaultData = this.context,
contextData = {
...contextDefaultData,
test: "New"
}
};
<UserApplicationContext.Provider value={contextData}>
<App/>
</UserApplicationContext.Provider>
现在,问题:在App中,我可以通过UserApplicationContext.Consumer组件访问更新的值,但我无法通过静态访问更新的值,如下所示:
import UserApplicationContext from './UserApplicationContext'
static contextType = UserApplicationContext
因此,this.context
将指向默认值,但不会更新一个。如何在不导出新上下文的情况下访问更新的值?谢谢!
我猜这是上下文api的限制?
为了访问最新版本的上下文,您必须位于提供程序组件树内部呈现的组件内部,并且您必须使用<UserApplicationContext.Consumer>
之类的上下文,或者如果您想使用钩子/功能组件,那么可以像const mostRecentContext = useContext(UserApplicationContext)
更好的方式做到这一点。
如果您尝试导入这样的上下文并访问它而不通过.Consumer
或useContext
钩子使用它,它将始终是传递给React.createContext()
的值。