javascript - React props 和 states-值不更新

标签 javascript html reactjs react-props

这是一个使用 props 和 state 的简单 react 示例。当用户在给定输入槽中键入名称时,显示的名称应在输出部分中相应更新。但该值不会更新。你能找到代码中的错误吗?

App.js

import "./App.css";
import UserInput from "./Person/userInput";
import UserOutput from "./Person/userOutput";

class App extends Component {
  state = {
    userName: [
      { name: "Max", age: 28, proff: "doctor" },
      { name: "Tom", age: 20, proff: "engg" },
      { name: "Dev", age: 23, proff: "writter" }
    ]
  };

  eHandler = event => {
    this.setState = ({
      userName: [
        { name: event.target.value, age: 28, proff: "doctor" },
        { name: event.target.value, age: 20, proff: "engg" },
        { name: event.target.value, age: 23, proff: "writter" }
      ]
    });
  };

  render() {
    return (
      <div className="App">
        <div className="card">
          <UserOutput
            name={this.state.userName[0].name}
            age={this.state.userName[0].age}
            proff={this.state.userName[0].proff} 
          />
          <UserInput changed={this.eHandler} />
        </div>
        <div className="card">
          <UserOutput
            name={this.state.userName[1].name}
            age={this.state.userName[1].age}
            proff={this.state.userName[1].proff}
          />
        </div>
        <div className="card">
          <UserOutput
            name={this.state.userName[2].name}
            age={this.state.userName[2].age}
            proff={this.state.userName[2].proff}
          />
          <UserInput changed={this.eHandler} />
        </div>
      </div>
    );
  }
}

export default App;

组件 - userInput.js


const userInput = props => {
  return (
    <div>
      <input type="text" onChange={props.changed}></input>
    </div>
  );
};

export default userInput;

组件 - userOutput.js

import React from "react";

const userOutput = props => {
  return (
    <div>
      <p>
        {props.name} of age {props.age} is a {props.proff}
      </p>
    </div>
  );
};
export default userOutput;

最佳答案

处理程序中的状态更新是错误的。应该是以下内容。

    this.setState({
      userName: [
        { name: event.target.value, age: 28, proff: "doctor" },
        { name: event.target.value, age: 20, proff: "engg" },
        { name: event.target.value, age: 23, proff: "writter" }
      ]
    });

关于javascript - React props 和 states-值不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59787356/

相关文章:

javascript - jQuery - 更改按钮文本而不刷新页面

HTML/CSS - 按钮在另一个元素下排列

javascript - 在 ReactangerlySetInnerHTML() 中使用 JSX 表达式渲染 HTML 字符串

javascript - 为什么 moment.utc(...).diff(moment.utc(...)) 受到源日期偏移量的影响

javascript - 删除纯 JS(非 jQuery)中焦点上的占位符属性

javascript - 鼠标离开时保持子菜单打开

javascript - 如何验证股市数据

javascript - 在 Canvas 中以自己的中心旋转图像

javascript - 在 Electron 中提供静态文件(React 应用程序)

javascript - 为什么设置 true/false 值对 React 状态不起作用?