【问题标题】:React - changing input value from a stateReact - 从状态更改输入值
【发布时间】:2019-04-11 07:53:30
【问题描述】:

好的,所以我正在使用一些颜色选择器来更改我的 this.state.colorPicked 并且效果很好,现在我有一个输入字段我想编写一个我可以调用的函数来连接值我的状态 colorPicked 如果它是空的,或者 concat comma 和那个值,如果不是,我如何访问这个输入字段? 我正在使用反应引导


            <InputGroup className="mb-3">
              <FormControl
                name="color"
                onChange={this.change}
                placeholder="Available Colors"
                aria-label="Available Colors"
              />
            </InputGroup>
            <div style={{ display: "flex", "flex-direction": "row" }}>
              <TwitterPicker
                className="mb-3"
                onChange={this.handleColorChange}
              />
              <Button
                style={{
                  background: this.state.colorPicked
                }}
                onClick={() => this.addColor(this.state.colorPicked)}
              >
                Add Color!
              </Button>
            </div>

TIA

澄清:我想选择颜色,onchange 检测器将其设置为状态,因此按钮的背景,现在在按钮单击时,我想将它的十六进制(状态)添加到文本字段作为文本输入,如果输入不是空的,我会在它前面加上逗号。

【问题讨论】:

  • 您已经编写了一个更改处理程序,它是什么样的?你试过什么?
  • 您的意思是要保留一组颜色?
  • @James 7 我不确定如何访问文本字段,
  • @Henry Woody,几乎是的

标签: javascript reactjs dom


【解决方案1】:

对于 react 表单,我们使用状态、onChange 和 value 属性的两种方式绑定。 首先添加 value 属性并将其设置为 ex inputField 的 state 属性。

<FormControl
   name="color"
   onChange={this.change}
   placeholder="Available Colors"
   aria-label="Available Colors"
   value=={this.state.inputField}
   />

现在您可以在更改函数中编写逻辑......类似

change = (e)=>{

 this.setState({inputField:e.target.value}
 // then copy array from state
 let arrFromState = [...this.state.colorPicked]
 let updatedArray = [...arrFromState, this.state.inputField] 
 // or use concat, push etc
 this.setState({colorPicked:updatedArray})



}

我不明白你想要做什么。 但这是使用 React 表单时的基本方法。双向绑定

【讨论】:

  • 工作完美,绑定还可以手动编辑文本字段禁用,谢谢。
  • ? 这是一个错字。
【解决方案2】:

要访问输入值,您可以在输入上使用 onChange 方法,将事件传递给它并通过 event.target.value 访问它。它应该看起来像这样:

&lt;input onChange={(event) =&gt; logInputValue(event)}

const logInputValue = ({ event: { target: { value } = {} } }) =&gt; { console.log(value) }

【讨论】:

  • 我不认为你理解我的问题,我输入代码的形式是我想要输入字符串的地方,字符串在我的this.state.colorPicked
  • 所以你想要的是将值从 this.state.colorPicked 传递给 ?您能向我们展示 FormControl 组件的实现吗?您可以简单地使用传递道具,例如
  • 你想让我展示什么实现?从字面上看,与它相关的唯一代码就在问题中,还有什么我应该添加的吗?
  • 我不确定您要完成什么。是否要将 this.state.colorPicker 值传递给 FormControl 组件,然后使用 onChange 方法对其进行更改?你能澄清一下吗?
  • 我更新了说明,代码,并添加了截图。
猜你喜欢
  • 2019-08-30
  • 1970-01-01
  • 2019-01-12
  • 1970-01-01
  • 2021-09-27
  • 2020-07-18
  • 2021-11-02
  • 2018-01-09
  • 1970-01-01
相关资源
最近更新 更多