假设我有一些依赖于其他状态的状态(例如当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) 我想创建下图所示的这个表。当单击编辑按钮时,它应该更改为文本字段并按下确认按钮,它应该再次转换为 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) 我有一个在输入字段发生变化时触发的处理程序。但是,当我将状态记录到控制台时,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)