是否有任何语法允许在函数组件之外赋值useState
?到目前为止,我已经尝试过了,但它不起作用:
import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";
function App() {
useEffect(() => setStateData("from useEffect"), []);
return <div className="App">{stateData}</div>;
}
const [stateData, setStateData] = App.useState("default value"); // fails
// const [stateData, setStateData] = App.prototype.useState("default value"); // also fails
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
代码沙箱:
3条答案
按热度按时间axzmvihb1#
免责声明:这是一个反模式。如果你想共享状态there's better ways,但只是为了信息...
你可以在组件外部使用
useState
的update
函数,方法是将它赋给一个变量,但一定要在卸载组件时清除它。slhcrj9b2#
是否有任何语法允许在函数组件之外分配useState?
如果你看一下文档和钩子规则
仅从React函数调用挂接
**不要从常规JavaScript函数调用钩子。**相反,您可以:
来自React函数组件的调用挂钩。
调用钩子从自定义钩子(我们将在下一页了解他们).
所以......不行,不能在功能组件之外使用
useState
。jv2fixgn3#
如果要在组件外部使用useState,请考虑使用https://jotai.org/
它是带有一些额外奖励的useState替换