【问题标题】:How to get the id of the current item?如何获取当前项目的id?
【发布时间】:2015-10-16 15:32:40
【问题描述】:

我正在编辑一个包含一些信息的项目,一旦项目被编辑,我需要通过post请求将新信息发送到数据库。

我正在处理的对象名为dealer,那个经销商有一个id,看代码

if (this.props.dealerData) {
  let dealerProps = this.props.dealerData.dealersData;
  dealerInfo = dealerProps.map((dealer) => {

    return (<div>
          <Card>

            <CardHeader title={dealer.NickName}
                        subtitle={dealer.DealerId} //DEALER ID HERE
                        avatar={dealer.DealerName}/>

              <Button onClick={this._updateDealer} />

          </Card>
        </div>
      );
  })
}

这是我用这个函数发送到数据库的数据

  _updateDealer = () => {
    UpdateDealerActions.updateDealer({
      DealerId   : // HERE I NEED TO SEND THE DEALER ID,
      DealerName : this.refs.DealerNameEdit.getValue(),
      NickName   : this.refs.NickNameEdit.getValue(),
    });
  }

让我解释一下:您在此处使用dealerInfo 呈现了该项目集合,大约有 30 个项目/经销商。 DealerId 是不可编辑的,它只是你需要发送到数据库以便知道你正在编辑的经销商。

那么,在我的函数_updateDealer() 中,捕获 DealerId 的最佳方法是什么?

编辑

这是我使用refs编辑的代码部分

<Checkbox value="Active" ref="Active" defaultChecked={true}/>
<TextField ref="DealerNameEdit" value={this.state.toEdit.DealerName} onChange={this._handleUpdateChange.bind(this, 'DealerName')} />
<TextField ref="CardIdEdit" value={this.state.toEdit.CardId} onChange={this._handleUpdateChange.bind(this, 'CardId')} />
<TextField ref="NickNameEdit" value={this.state.toEdit.NickName} onChange={this._handleUpdateChange.bind(this, 'NickName')} />
<TextField ref="LegalIdEdit" value={this.state.toEdit.LegalId} onChange={this._handleUpdateChange.bind(this, 'LegalId')} />
<TextField ref="TypeIdEdit" value={this.state.toEdit.TypeId} onChange={this._handleUpdateChange.bind(this, 'TypeId')} />

【问题讨论】:

  • @Tushar 我已经放了 Reactjs 标签。谢谢
  • 不确定你的结构的其余部分是什么样的,但我怀疑你的引用可能会遇到问题,因为看起来你正在创建一个编辑器列表但只有两个引用而不是n 参考...
  • @Jonathan 这是代码的另一部分。
  • @Jonathan 看看编辑
  • 这些文本字段在卡片中吗?

标签: javascript reactjs


【解决方案1】:

您可以将 id 绑定到点击处理程序。

     <Button onClick={this._updateDealer.bind(this, dealer.DealerId)} />

然后在你的处理程序中

_updateDealer = (DealerId) => {
    UpdateDealerActions.updateDealer({
    DealerId   : DealerId,
    DealerName : this.refs.DealerNameEdit.getValue(),
    NickName   : this.refs.NickNameEdit.getValue(),
  });
}

另一种解决方案应该是:

<TextField ref="DealerIdEdit" value={this.state.toEdit.DealerId} />

在_updateDealer()

DealerId   : this.refs.DealerIdEdit.getValue()

【讨论】:

  • 我得到的只是收藏中最后一个经销商的 ID,而不是当前经销商的 ID。
  • 对不起,我在绑定时出错了。
  • 接受编辑,以便我给你正确的答案。
猜你喜欢
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 2011-07-27
  • 2014-03-01
相关资源
最近更新 更多