【发布时间】:2021-01-26 05:06:40
【问题描述】:
我有两个兄弟组件(A 和 B),我试图在它们之间传递反应上下文。不是静态上下文。上下文在组件 A 中创建和更新,如下所示:
export const ModelContext = React.createContext({ model: '' });
function Models() {
const [check, setCheck] = useState({});
const [alert, setAlert] = useState(false);
let model = useContext(ModelContext);
const handleChange = (event) => {
const arr = Object.keys(check);
if (arr.length === 1 && arr.includes(event.target.name) === false) {
setAlert(true);
} else if (arr.length === 1 && arr.includes(event.target.name) === true) {
setAlert(false);
setCheck({});
model = check;
console.log(model);
} else {
setCheck({ ...check, [event.target.name]: event.target.checked });
setAlert(false);
}
};
我在handleChange中更新了这个组件中的上下文(ModelContext)。我可以从 console.log(model) 看到上下文正在按照我的意愿进行更新。
但是,在组件 B 中,上下文 (ModelContext) 并未更新。我不知道从这里去哪里。这是组件 B:
import { ModelContext } from './index';
function Fields() {
const modelSelected = useContext(ModelContext);
}
是否可以以这种方式更新上下文,还是应该采取其他方法?
【问题讨论】:
标签: reactjs use-effect react-context