this.setState更新

简介: this.setState更新

嵌套更新state中的值



嵌套更新state中的值

还没有自己写个Demo尝试一遍,先挖个坑


const obj = {
  a: {
    // 为了安全的更新 obj.a.c,需要先复制一份
    c: 3
  },
  b: 2
}
const obj2 = {
  // obj 的备份
  ...obj,
  // 覆盖 a
  a: {
    // obj.a 的备份
    ...obj.a,
    // 覆盖 c
    c: 42
  }
}
const arr = ['a', 'b']
// 创建 arr 的备份,并把 c 拼接到最后。
const arr2 = arr.concat('c')
// 或者,可以对原来的数组创建复制体
const arr3 = arr.slice()
// 修改复制体
arr3.push('c')


e.target.[name]: e.targ



et.value更新

在Javascript中,当创建对象并将该对象的键包装在数组括号[]中时,您可以动态设置该键。


import React, { Component } from "react";
export default class Register extends Component {
  state = {
    userName: "",
    password: "",
    confirmPassword: "",
    email: "",
  };
  formSubmit = (e) => {
    e.preventDefault();
    console.log(this.state);
  };
  handleChange = (e)=>{
    this.setState({
        [e.target.name]: e.target.value
    })
  }
  render() {
    const { userName, password, email, confirmPassword } = this.state;
    return (
      <div>
        <form onSubmit={this.formSubmit}>
          <div className="form-group">
            <label htmlFor="userName">UserName</label>
            <input
              type="text"
              className="form-control"
              id="userName"
              name="userName"
              defaultValue={userName}
              onChange={this.handleChange}
            />
          </div>
          <div className="form-group">
            <label htmlFor="exampleInputEmail1">Email</label>
            <input
              type="email"
              className="form-control"
              id="exampleInputEmail1"
              name="email"
              defaultValue={email}
              onChange={this.handleChange}
            />
          </div>
          <div className="form-group">
            <label htmlFor="exampleInputEmail1">Password</label>
            <input
              type="password"
              className="form-control"
              id="passowrd"
              name="password"
              defaultValue={password}
              onChange={this.handleChange}
            />
          </div>
          <div className="form-group">
            <label htmlFor="exampleInputPassword1">Confirm Password</label>
            <input
              type="password"
              className="form-control"
              id="confirmPassword"
              name="confirmPassword"
              defaultValue={confirmPassword}
              onChange={this.handleChange}
            />
          </div>
          <button type="submit" className="btn btn-primary">
            Sing up
          </button>
        </form>
      </div>
    );
  }
}
目录
相关文章
|
7月前
|
前端开发
为什么调用setState而不是直接改变state
为什么调用setState而不是直接改变state
58 0
|
1月前
|
前端开发
在 componentWillMount 中调用 setState 会发生什么
在 `componentWillMount` 生命周期方法中调用 `setState` 会导致组件在初始渲染前进行额外的状态更新和重新渲染,可能影响性能并引发潜在的逻辑问题。建议避免在这种情况下使用 `setState`。
|
2月前
|
前端开发 开发者
为什么调用 setState 而不是直接改变 state
为什么调用 setState 而不是直接改变 state
|
5月前
|
前端开发
useEffect问题之为什么使用useEffect来在props改变时重置state是低效的
useEffect问题之为什么使用useEffect来在props改变时重置state是低效的
|
7月前
setState 和 replaceState 的区别
setState 和 replaceState 的区别
55 2
|
JavaScript
state 和 props 触发更新的生命周期分别有什么区别?
state 和 props 触发更新的生命周期分别有什么区别?
|
7月前
|
前端开发
setState和repalceState的区别
setState和repalceState的区别
65 0
|
7月前
|
前端开发 JavaScript
设置状态:setState
设置状态:setState
|
JavaScript 前端开发
setState总结
setState总结
53 1
|
前端开发
setState异步问题
setState异步问题
62 0