相关疑难解决方法(0)

我可以在useEffect钩子中设置状态

假设我有一些依赖于其他状态的状态(例如当A改变时我希望B改变).

是否适合创建一个观察A并在useEffect钩子中设置B的钩子?

效果是否级联,当我点击按钮时,第一个效果会激发,导致b改变,导致第二个效果在下一个渲染之前触发?构造这样的代码有任何性能缺点吗?

let MyComponent = props => {
  let [a, setA] = useState(1)
  let [b, setB] = useState(2)
  useEffect(
    () => {
      if (/*some stuff is true*/) {
        setB(3)
      }
    },
    [a],
  )
  useEffect(
    () => {
      // do some stuff
    },
    [b],
  )

  return (
    <button
      onClick={() => {
        setA(5)
      }}
    >
      click me
    </button>
  )
}
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-hooks

34
推荐指数
5
解决办法
2万
查看次数

反应不使用带有对象数组的 setState 更新状态

我想创建下图所示的这个表。当单击编辑按钮时,它应该更改为文本字段并按下确认按钮,它应该再次转换为 tr td 标签。
在此处输入图片说明
这是我的代码。我创建了对象数组,其中包含 id 属性、name 属性和 value 属性。单击编辑按钮时,它应更改为文本字段,单击确认按钮时,文本字段的值应在对象数组中更新。

import React, { useState } from "react";
import style from "./css/Register.module.css";
import { Table, Button, Icon, TextInput } from "react-materialize";

const ManipulateRegister = () => {
  const [RegisterData, setRegisterData] = useState([
    {
      id: 0,
      name: "W Register",
      value: 0,
      isEdit: false,
    },
    {
      id: 1,
      name: "Z Register",
      value: 0,
      isEdit: false,
    },
    {
      id: 2,
      name: "B Register",
      value: 0,
      isEdit: false,
    },
    {
      id: 3,
      name: "C Register", …
Run Code Online (Sandbox Code Playgroud)

javascript arrays reactjs

2
推荐指数
1
解决办法
2204
查看次数

setState 之后 React 状态未定义?

我有一个在输入字段发生变化时触发的处理程序。但是,当我将状态记录到控制台时,resData 是“未定义”?这是不可能的,因为 console.log(body) 确实返回结果。

handlePersonNameChange(event) {
var resData
request('https://swapi.co/api/people/?search='+event.target.value, function (error,response,body) {
  console.log(body)
  resData = body
})
this.setState({personData: resData});
console.log(this.state)
}
Run Code Online (Sandbox Code Playgroud)

reactjs

1
推荐指数
1
解决办法
9017
查看次数

标签 统计

reactjs ×3

javascript ×2

arrays ×1

react-hooks ×1