javascript - 如何根据 Context API 中的值呈现不同的组件?
问题描述
所以我有这个导航器组件,根据来自另一个组件的值,我需要显示不同的底部导航。
现在我在上下文消费者上遇到错误,这里:
import { ThemeProvider, ThemeConsumer } from '../context/some';
const SelectedRoute = () => (
<ThemeConsumer>
{context => (context ? MainTabNavigator : PickupNavigator)}
</ThemeConsumer>
);
export default createAppContainer(
createSwitchNavigator(
{
App: SelectedRoute,
},
),
);
这是我唯一需要创建的上下文:
const ThemeContext = React.createContext(0);
export const ThemeProvider = ThemeContext.Provider;
export const ThemeConsumer = ThemeContext.Consumer;
我收到此警告:
警告:函数作为 React 子级无效。如果您返回一个组件而不是从渲染中返回,则可能会发生这种情况。或者,也许您打算调用此函数而不是返回它。
我该怎么做才能正确渲染我需要的东西?
解决方案
你想从作为 child to 的函数返回 JSX ThemeConsumer
,而不仅仅是返回一个组件。
const SelectedRoute = () => (
<ThemeConsumer>
{context => (context ? <MainTabNavigator /> : <PickupNavigator />)}
</ThemeConsumer>
);
推荐阅读
- django - Django Channels ASGI - AppRegistryNotReady:应用程序尚未加载
- firebase - 添加初始化 firebase_core 后,Flutter App 卡在加载屏幕
- javascript - 使用 Fortify 工具扫描时替代 Eval() 以避免漏洞检测
- html - 有没有办法用 html 和 css 实现材料文本字段?
- ms-access - 删除数据宏后
- python - Sklearn 错误,无法从“joblib”导入名称“Logger”
- python-3.x - 将 Pandas 列操作为不同的标签
- algorithm - 获取给定数字数组的所有唯一目标总和组合
- c# - 如何将不同类型的参数传递给通用 ServiceFilter 或 ActionFilter
- python-3.x - Python 数组交集