javascript - 如何在 Material UI 中实现 Context Api
问题描述
我试图在我的组件中使用上下文 API 传递一个属性。我收到以下打字稿错误。
“字符串”类型上不存在属性“值”
我正在使用创建上下文
export const TimeZoneContext = createContext("timeZone");
然后在我的回报中为组件提供值
<TimeZoneContext.Provider value="timeZone" />
我正在使用以下语句在另一个组件的 return 语句中使用该值
<TimeZoneContext.Consumer>
{({ value }) => (
<TableCell className={classes.tableCell}>{value}</TableCell>
)}
</TimeZoneContext.Consumer>
请随时询问所需的更多信息。谢谢。实现嵌套上下文 API 与简单的 API 有何不同。我认为问题在于提供者和消费者中的组件不共享关系。谢谢
解决方案
您可以使用 useContext 挂钩来检索值。
这是您修改的代码
https://codesandbox.io/s/material-demo-sb27x?fontsize=14
export const TimeZoneContext = createContext("timeZone");
ReactDOM.render( <TimeZoneContext.Provider value="PST"><App/> </TimeZoneContext.Provider>,
document.querySelector('#root'));
//In your App.js you should see value 'PST'
const context = useContext(TimeZoneContext);
// You can use value in the context in className
<Table className={classes[context]}>
// Use value in TableCell
<TableCell>{context}</TableCell>
推荐阅读
- angular - 使用服务器端渲染角度时出现“未定义窗口”错误
- javascript - 首次从下拉列表中选择项目时,onchange函数不会触发 - Thinbug
- javascript - 想要访问子网格视图中的数据,但它显示“未找到匹配记录”
- c# - 如何使用实体框架在数据库中添加不同的值
- python - Pandas:删除任何列中没有填充值的行
- python - 将 .pb 转换为 coreml
- php - 在 codeigniter 中设置默认日期名称从星期日开始
- javascript - 如何在 Sequelize 的嵌套关联中计数?
- c# - 如何在 asp.net c# 中对电子邮件和联系人(相同的 TextBox)使用多个客户端验证?
- tensorflow - 如何将 CIFAR10 图像可视化为矩阵