Reactjs React.js:是否可以在函数组件外部分配useState()?
是否有任何语法允许在功能组件之外分配Reactjs React.js:是否可以在函数组件外部分配useState()?,reactjs,react-hooks,Reactjs,React Hooks,是否有任何语法允许在功能组件之外分配useState?到目前为止,我已经尝试过这个方法,但没有成功: import React, { useState, useEffect } from "react"; import ReactDOM from "react-dom"; function App() { useEffect(() => setStateData("from useEffect"), []); return <div className="App">
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);
import React,{useState,useffect}来自“React”;
从“react dom”导入react dom;
函数App(){
useEffect(()=>setStateData(“来自useEffect”),[]);
返回{stateData};
}
const[stateData,setStateData]=App.useState(“默认值”);//失败
//const[stateData,setStateData]=App.prototype.useState(“默认值”);//也失败了
const rootElement=document.getElementById(“根”);
ReactDOM.render(
是否存在允许在函数组件之外分配useState的语法
如果你看一下
仅从React函数调用钩子
不要从常规JavaScript函数调用钩子。相反,您可以:
✅ 来自React函数组件的调用挂钩。
✅ 从定制钩子调用钩子(我们将在下一页了解它们)
因此…不,您不能在功能组件外部使用useState
。您可以通过将useState
函数分配给变量,在组件外部使用update
函数。只需确保在组件卸载时将其清除即可
/*保存更新功能的参考*/
让updateOutside
函数App(){
const[state,update]=useState()
useffect(()=>{
/*将更新分配给外部变量*/
updateOutside=update
/*组件卸载时取消分配*/
return()=>updateOutside=null
})
返回`App State:${State}`
}
如果(updateOutside)updateOutside(/*将重新呈现应用程序*/)
为什么要这样做?useState
不应该这样做,也许你想做其他事情,不需要在功能组件之外使用useState
就可以完成。主要是为了我自己理解React是如何工作的,但如果我喜欢分离的话,可能是为了代码组织。简短的回答,不,因为这不是React Hooks是如何工作的?从该页看,似乎是将useState()调用包装到另一个函数中(一个“自定义挂钩”)。这准确吗?@SeanDezoysa是的,它变成了自定义挂钩,但您只能在功能组件内调用自定义挂钩