Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使操作失效?_Reactjs_Typescript - Fatal编程技术网

Reactjs 使操作失效?

Reactjs 使操作失效?,reactjs,typescript,Reactjs,Typescript,是否允许我将操作置于useffect之外,这是一种良好的做法 功能购买票(道具:任意){ useffect(()=>{ //.. },[eventId,道具历史]; //这里的代码可以吗? const userNameLoggedIn=localStorage.getItem(“userNameLoggedIn”); 如果(buyTicketData){ 如果(BuyTicketDataPass.length==0){ buyTicketData通行证=Object.keys(buyTicket

是否允许我将操作置于
useffect
之外,这是一种良好的做法

功能购买票(道具:任意){
useffect(()=>{
//..
},[eventId,道具历史];
//这里的代码可以吗?
const userNameLoggedIn=localStorage.getItem(“userNameLoggedIn”);
如果(buyTicketData){
如果(BuyTicketDataPass.length==0){
buyTicketData通行证=Object.keys(buyTicketData.passs);
BuyTicketDataPass.unshift(“”);
}
返回(
)
}
}
使用路由器导出默认值(BuyTicket);

这只是一个JavaScript函数,所以您可以这样做。然而,副作用应该放在useEffect挂钩中,所以这不是好的做法

是否要在每次渲染时从本地存储中提取用户名?在状态更改期间,组件可能会渲染多次。用户名在组件的生命周期中似乎不会经常更改,所以只需获取一次。只需在挂载上检索它,如下所示:

useEffect(() => {
    // set in state vs retrieving each render
    setUsernameState(localStorage.getItem("userNameLoggedIn"))
}, [/* empty array means it runs only once */])