【发布时间】:2019-09-07 04:52:29
【问题描述】:
我有点喜欢 ReactJS,我正在尝试将 useContext 与钩子一起使用,但我遇到了一些麻烦。我已经阅读了几篇文章,但我无法理解。
我了解它的用途,但我不知道如何使它正常工作。如果我是正确的,目的是能够避免将道具传递给每个孩子,并能够在组件树的任何深度访问来自公共提供者的值。这包括函数和状态值。如果我错了,请纠正我。
我一直在测试以下文件。这是ManagerContext.js 文件:
import { createContext } from 'react';
const fn = (t) => {
console.log(t);
}
const ctx = createContext({
title: 'This is a title',
editing: false,
fn: fn,
})
let ManagerContext = ctx;
export default ManagerContext;
然后我就有了在我的主应用程序中使用的LessonManager.js 文件:
import React from 'react';
import LessonMenu from './LessonMenu.js';
export default function LessonManager() {
return (
<LessonMenu />
)
}
最后是LessonMenu.js:
import React from 'react';
import 'rsuite/dist/styles/rsuite.min.css';
import ManagerContext from './ManagerContext.js';
export default function LessonMenu() {
const value = React.useContext(ManagerContext);
return (
<div>
<span>{value.title}</span>
<button
onClick={()=>value.fn('ciao')}
>click</button>
<button
onClick={()=>value.title = 'new title'}
>click</button>
</div>
)
}
在 LessonMenu.js 文件中,onClick={()=>value.fn('ciao')} 有效,但 onClick={()=>value.title = 'new title'} 不会重新渲染组件。
我知道出了点问题,但有人可以帮我说清楚一点吗?
【问题讨论】:
标签: reactjs react-hooks