reactjs - 为什么在 Electron 应用程序中 React Context API 行为异常?
问题描述
我在我的电子应用程序中使用 React Context API,但似乎消费者正在从上下文的初始创建中获取默认值,而不是提供者提供的值。
context.js
import createReactContext from 'create-react-context';
export const LayoutContext = createReactContext({
isMobile: false,
toggleSidebar: () => undefined,
});
layout-provider.jsx
export default class LayoutProvider extends React.Component {
constructor(props) {
super(props);
this.state = {
isMobile: false,
toggleSidebar: this.toggleSidebar,
};
}
toggleSidebar = (isOpen) => {
this.setState((prevState) => ({
isSidebarOpen: _isBoolean(isOpen) ? isOpen : !prevState.isSidebarOpen
}));
};
render() {
return (
<LayoutContext.Provider value={this.state}>
{this.props.children}
</LayoutContext.Provider>
);
}
}
consumer.jsx
..
<LayoutContext.Consumer>
{(layoutContext) => <Menu {...props} {...layoutContext} />
}
</LayoutContext.Consumer>
...
menu.jsx
...
handleToggle = (evt) => {
evt.preventDefault();
this.props.toggleSidebar();
};
render() {
return(
...
<a href='#'
onClick={this.handleToggle}
</a>
...
);
}
app.jsx
render() {
...
<LayoutProvider>
<Menu />
</LayoutProvider>
...
}
然而,在消费者中,我看到toggleSidebar
返回未定义。
相同的代码在 Web 应用程序中工作(即,toggleSidebar 来自 Provider 组件),但在 Electron 中,我看到了这种差异。
解决方案
推荐阅读
- python - 我正在尝试使用 Python 库 pyral 在 CA Rally 中上传测试用例,测试用例已成功上传,但无法为测试用例设置所有者
- javascript - 无法在 Angular 7 中触发 SVG 上的鼠标事件
- java - 在最近的 android 更新后无法从 Uri 创建文件
- rxjs - 如何从课堂上启用可观察的
- math - 在不使用任何边两次的情况下,按特定顺序在几个节点之间的最短路径是什么?
- javascript - 如果要访问的 id 存储在变量中,如何访问元素
- java - 无法在 Android Studio 中运行 Scratch 文件
- python - PIP 随机失败“找不到满足要求的版本”,具有相同的 requirements.txt
- python - 如何从烧瓶应用程序中的 alembic_version 表中删除一行
- python - 从 C 访问 Numpy 矩阵作为 3D 数组