【问题标题】:How to push textfield and dropdown values into state array如何将文本字段和下拉值推送到状态数组中
【发布时间】:2020-07-28 07:01:07
【问题描述】:

我正在尝试呈现两个字段 text field 和 dropdown 。每当用户在文本字段中输入内容时,我都想更新它的状态。状态对象属性必须是对象数组,例如 [{textFieldType:'text', value:'Hello'}] 。我想对下拉列表做同样的事情[{textFieldType:'text', value:'Hello'},{textFieldType:'dropdown',value:'Hello'}] 意味着我想通过两个字段更新状态值。我是新手,有人可以帮帮我吗。

JSFiddle : https://jsfiddle.net/dy7zc3au/3/

代码

  state = {
    extraFields:[]
    }
    
   

      <td>
       <input
       type="text"
       className="inputStyle"
       placeholder={item.fieldName}
       value={optionalFields}
       />
     </td>
    <td>
    <select>
     <option>value 1</option>
     <option>value 2</option>
    </select>
    </td>

【问题讨论】:

标签: javascript reactjs ecmascript-6 react-redux


【解决方案1】:

这里

class App extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
        optionalFields: {}
    }
  }
  change(e) {
    const optionalFields = this.state.optionalFields;
        optionalFields[e.target.type] = e.target.value;
      this.setState({optionalFields})
    }
  render() {
    return (
      <div>
        <h2>Optional Fields:</h2>
       <input type="text" placeholder="Enter Text" onChange={(e) => {this.change(e)}}/>
       <br/><br/><br/>
       <select onChange={(e) => {this.change(e)}}>
         <option>value 1</option>
         <option>value 2</option>
       </select>
      </div>
    )
  }
}

ReactDOM.render(<App />, document.querySelector("#app"))

使用对象而不是数组更容易控制

示例:

{
  select-one: "value 1",
  text: "a"
}

【讨论】:

  • 谢谢你的回答,实际上我需要在对象数组中,因为我需要在对象中添加更多的东西。你能改一下吗?我想喜欢 [{fieldName:'value 1', type:'text'} 等
【解决方案2】:

选中此代码框。因为类型是select-one 而不是dropdown,所以代码更多。

https://codesandbox.io/s/ecstatic-wilson-fv5b8

【讨论】:

  • 抱歉,我正在修改一些代码。请再试一次:)
  • 实际上,它工作但面临一个问题。例如,每当我输入时,我都会输入(what),因此它会生成像 [ { fieldName:'w'},{ fieldName:'wh'},{ fieldName:'wha'},{ fieldName:'what'},] 这样的数组.我想单身​​
  • 你能再试一次吗?刷新代码框页面。它对我没有这样做。也检查 console.log。每当我输入输入文本时,它总是在数组中有 1 个对象
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
  • 2018-07-26
  • 1970-01-01
  • 2023-02-19
  • 2014-03-22
相关资源
最近更新 更多