基本形式反应

时间:2020-11-09 06:55:26

标签: reactjs forms

您好,我只想创建一个表单,并且我的文本框不接受我的输入,我的提交也起作用,但是不发送任何值。我究竟做错了什么?我知道这是一个基本问题,但是我不知道代码中的问题是什么。

关键问题:

  1. 它不会更新状态,也不会接受我的输入。
  2. 字段可编辑但无法写入

代码

import React, { Component } from "react";

class Postform extends Component {
  constructor(props) {
    super(props);

    this.state = {
      name: "",
      category: "",
      price: "",
    };
  }

  changeHandler = (e) => {
    this.setState = { [e.target.name]: e.target.value }; 
  };

  submitHandler = (e) => {
    e.preventDefault();
    console.log(this.state);
  };

  render() {
  
    const { name, category, price } = this.state;

    return (
      <div>
        <form onSubmit={this.submitHandler}>
          <div>
            <input
              type="text"
              name="name"
              placeholder="Name"
              value={name}
              onChange={this.changeHandler}
            />

            <input
              type="text"
              name="category"
              placeholder="Category"
              value={category}
              onChange={this.changeHandler}
            />

            <input
              type="text"
              name="price"
              placeholder="Price"
              value={price}
              onChange={this.changeHandler}
            />
          </div>
          <button type="submit">Add product</button>
        </form>
      </div>
    );
  }
}

export default Postform;

1 个答案:

答案 0 :(得分:0)

将此行更改为

changeHandler = e => {
    this.setState({[e.target.name]: e.target.value });
  };

由于setState是一个函数,因此它不是属性!