javascript - 表单提交后的状态更改会在 React 中立即恢复

标签 javascript reactjs forms state dom-events

我有一个简单的 react 应用程序,列出了来自各州的用户。代码如下:

import React, { Component } from 'react';
import './App.css';

class App extends Component {

  state = {
    users : [
      { name:'Ramu', age:23 },
      { name:'Somu', age:34 },
      { name:'Bheemu', age:45 }
    ]
  };

  addUser = (user, e) => {
    let users = Object.assign([], this.state.users);
    users.push(user)
    this.setState({
      users : users
    })
  }

  render() {
    return (
      <div className="App">
        <ul>
          { 
            this.state.users.map((user, index) => {
              return (<div>              
                { user.name } | {user.age}
                </div>)
            }) 
          }
        </ul>
        <form onSubmit={this.addUser.bind(this, { name:'Sita', age:21 })}>
          <label>
            Name:
            <input type="text"/>
          </label>
          <label>
            Age:
            <input type="text" />
          </label>
          <input type="submit" value="Submit" />
        </form>
      </div>
    );
  }
}

export default App;

提交表单后,用户会被添加,但页面会立即重新加载,并且新用户会从状态中删除。为什么新用户被删除?

最佳答案

您需要阻止默认浏览器表单提交。添加e.preventDefault()里面addUser方法。默认浏览器表单提交会重新加载该页面,因此是新的<App />组件是以其初始状态创建的,并且您会丢失新数据。

关于javascript - 表单提交后的状态更改会在 React 中立即恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52179914/

相关文章:

javascript - 如何创建 javascript 函数对象并获取其内部属性

javascript - 向请求添加 header 时出现 HTTP 状态代码 405 错误

javascript - 关闭后如何清除模态中的 react 状态?

node.js - 如何使用 React + Webpack 应用程序存储和访问我的 API key ?

reactjs - 如何更改星期 react 日期选择器的格式?

css - 如何在提交按钮中包含 "span"和 "class"?

php - 使用 PhoneGap 转换 PHP MySQL 网页

javascript - 使用 PropType 对嵌套对象属性进行类型检查

javascript - vue + nuxt : dynamic import of route pages fails at render

c# - 如何使用后请求从 Windows 窗体打开网站?