Input-Component:React无法识别DOM元素上的道具

问题描述 投票:0回答:2

当我尝试在输入字段中设置组件的状态时,我遇到了一个问题。我尝试通过在构造函数中设置Object值来尝试,但这也不起作用。如果我删除道具,则输入字段将没有任何值。我已经在下面发布了我的JS代码。

输入组件:

            <div className="form__group">
              <input
                className="form__field"
                id={props.name}
                name={props.name}
                type={props.inputtype}
                value={props.value}
                onChange={props.handleChange}
                placeholder={props.placeholder}
                {...props}
              />
              <label htmlFor={props.name} className="form__label">{props.placeholder}</label>
            </div>

JSX代码:

          <Input
            inputtype={"text"}
            title={"Full Name : "}
            name={"name"}
            value={this.state.newUser.name}
            handleChange={this.handleInput}
            placeholder={"Enter your Name"}
          />{" "}

JS代码:

class FormContainer extends Component {
  constructor(props) {
    super(props);
    this.state = {
      newUser: {
        name: "",
        age: "",
        gender: "",
        skills: [],
        about: ""
      },
this.handleInput = this.handleInput.bind(this);
}
  handleInput(e) {
    let value = e.target.value;
    let name = e.target.name;
    this.setState(
      prevState => ({
        newUser: {
          ...prevState.newUser,
          [name]: value
        }
      }),
      () => console.log(this.state.newUser)
    );
  }
}
javascript reactjs dom
2个回答
0
投票

实际上您的JSX中有问题(handleChange代替onChange,但这不是主要问题)

因此,在我的示例中,您的最终代码应如下所示:>

handleInput = (input) => {
  this.setState({ newUser: { [input.target.name]: input.target.value } });
}

  <Input
    inputtype="text"
    title="Full Name : "
    name="name"
    value={this.state.newUser.name}
    onChange={this.handleInput}
    placeholder="Enter your Name"
  />

0
投票

handleChange由于{... props}而传递,对于输入元素无效。

© www.soinside.com 2019 - 2024. All rights reserved.