【问题标题】:Conditionally add/remove property from element with React使用 React 有条件地从元素中添加/删除属性
【发布时间】:2017-04-28 06:22:32
【问题描述】:

我有这个 TextField 元素。我想有条件地添加value={x}defaultValue={x}

这会起作用(没有任何条件)

<TextField
    id="pickupName"
    className="order-form-input"
    onBlur={this.fieldChange('name')}
    ref="pickupName"
    defaultValue={(order.pickup || {}).name || ''}
    // hintText="Pickup Contact Name"
    floatingLabelFixed={true}
    floatingLabelText="Contact Name"
/>

但是,如果我尝试添加条件(当然会失败):

<TextField
    id="pickupName"
    className="order-form-input"
    onBlur={this.fieldChange('name')}
    ref="pickupName"
      {true ? defaultValue={(order.pickup || {}).name || ''} :
                            value={(order.pickup || {}).name || ''}}
    // hintText="Pickup Contact Name"
    floatingLabelFixed={true}
    floatingLabelText="Contact Name"
/>

有没有办法让defaultValuevalue 属性指向函数而不是静态字符串?鉴于我的需要,我必须有条件地使用 valuedefaultValue,因为它们的行为完全不同。

【问题讨论】:

  • 也许你应该使用value
  • 是的,但如果我使用 value,那么我必须使用 onChange,这是矫枉过正的,每次击键都会更新..

标签: javascript html reactjs conditional


【解决方案1】:

如果您使用的是 es6,则使用 {...args} 运算符解析组件声明末尾的所有剩余参数。

例子:

<TextField
    id="pickupName"
    className="order-form-input"
    onBlur={this.fieldChange('name')}
    ref="pickupName"
    floatingLabelFixed={true}
    floatingLabelText="Contact Name",
    {...extra_args}
    />

我希望它会起作用。

【讨论】:

  • 谢谢!你能举个例子来说明 extra_args 的样子吗?数组还是普通对象?
猜你喜欢
  • 2012-10-09
  • 2017-08-10
  • 1970-01-01
  • 2011-02-07
  • 2021-12-28
  • 2015-04-05
  • 2011-03-15
  • 2014-11-08
  • 2017-12-15
相关资源
最近更新 更多