【问题标题】:React useState doesn't hold/ store values from API/SDK dataReact useState 不保存/存储来自 API/SDK 数据的值
【发布时间】:2020-04-06 21:35:31
【问题描述】:

这可能是一个多余的问题....我能够使用 useState 存储一个对象并呈现这样的值,但是在一些“空闲”时间之后,状态消失了。我正在从 SDK(名字、姓氏...)中获取数据,我可以将此信息用作表单中的占位符。

为了我的使用,我创建了一个原始的多步骤动态表单,位于同一个组件上,用户将在继续下一步之前一次回答 1 个问题。最后一步呈现所有用户的信息,这些信息有时会显示,有时会引发错误 user.firstName 未定义可能是由于用户回答问题“空闲”时间所花费的时间..

import { User } from 'randomSDK';

const FormComponent = () => {
 let [user, setUser] = useState({});

 useEffect(() => {
  async fetchData(){
   let _user = await User.getUserInfo();
// Result user ={firstName: 'john', lastName: 'doe'}
   setUser(_user)
  }
fetchData()
 ), []}

 return (
  <form>
    <input placeholder={user.firstName} type='text' />
  // sometimes user.firstName shows
  // other times- TypeError: Cannot read property 'firstName' of undefined

  // etc....
  </form>
 )
}

export default FormComponent;

我应该通过在渲染上丢失这些数据来创建某种 redux 吗???

也许我应该设置一个测试用例,假设在 user.firstName 的放置中没有这样的数据..

我尝试了以下方法,但仍然遇到同样的错误:

<input placeholder={user.firstName || ''} />
<input placeholder={!user.firstName ? '' : user.firstName} />

我确定这是一个非常非常简单的解决方法,我只是让它变得太复杂了..

【问题讨论】:

    标签: reactjs react-hooks state use-state


    【解决方案1】:

    这可能是因为您的 useEffect 运行了多次。

     useEffect(() => {
      async fetchData(){
       let _user = await User.getUserInfo();
    // Result user ={firstName: 'john', lastName: 'doe'}
       setUser(_user)
      }
      fetchData();
     ), []} //add dependancy array //
    

    请看看这是否有效。

    【讨论】:

    • 对不起,我也忘了在问题的代码部分中包含这个。这正是我拥有它和依赖数组的方式。感谢您指出这一点。
    • 那你可以添加整个代码吗?就像您如何通过该输入和所有设置状态一样。如果整个组件的代码可用,将会很有帮助。
    • 我无法用这么多行代码发布这个组件。因此,我将其分解为对我如何使用 useState 和 useEffect 的最简单、基本和原始的理解。它实际上是在声明组件,为 useState 声明变量,useEffect 对 SDK 和 setState 进行异步/等待调用。为了这个例子,假设 2 个输入 type=text,placeholder1 ={user.firstName} placeholder2={user.lastName}。似乎当表单达到呈现这些状态时,它已经失去了记忆。为什么会这样
    猜你喜欢
    • 2019-12-25
    • 2023-03-19
    • 1970-01-01
    • 2021-12-21
    • 2020-09-11
    • 2021-12-01
    • 2022-12-30
    • 1970-01-01
    • 2018-09-24
    相关资源
    最近更新 更多