首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用视图逻辑来确定组件的属性

如何使用视图逻辑来确定组件的属性
EN

Stack Overflow用户
提问于 2016-08-28 02:53:10
回答 2查看 41关注 0票数 1

我有一个组件,在某些情况下,我想给它一个value和一个onChange属性,特别是当一个id属性被传递给这个组件时。

代码语言:javascript
复制
<TextField
    hintText="Recipe Name"
    ref={r => this.recipeName = r}
    {this.props.id ? 'value={this.state.name}' : ''}
    {this.props.id ? 'onChange={this.handleNameChange}' : ''} />

然而,当我使用这段代码时,我得到了这个错误。

代码语言:javascript
复制
BabelLoaderError: SyntaxError: Unexpected token (71:13)

  69 |             hintText="Recipe Name"
  70 |             ref={r => this.recipeName = r}
> 71 |             {this.props.id ? 'value={this.state.name}' : ''}
     |              ^
  72 |             {this.props.id ? 'onChange={this.handleNameChange}' : ''} />

我知道只要把视图逻辑放在组件之外就行了,就像这样:

代码语言:javascript
复制
{ this.props.id ?
    <TextField
        hintText="Recipe Name"
        ref={r => this.recipeName = r}
        value={this.state.name}
        onChange={this.handleNameChange}/> :
      <TextField
        hintText="Recipe Name"
        ref={r => this.recipeName = r} />
}

但是因为我使用了多个<TextField />组件,所以这段代码变得非常笨拙。有没有什么方法可以让我在组件属性内部而不是外部使用? :视图逻辑?

EN

回答 2

Stack Overflow用户

发布于 2016-08-28 03:03:58

你可以像下面这样尝试一下。

代码语言:javascript
复制
<TextField
  hintText="Recipe Name"
  ref={r => this.recipeName = r}
  value = {this.props.id ? this.state.name : undefined} // no need to use curly braces inside another curly brace
  onChange = {this.props.id ? this.handleNameChange : undefined} 
/>
票数 1
EN

Stack Overflow用户

发布于 2016-08-28 04:06:55

通过修改Ahmmed的代码,我发现通过将三元运算符的else条件设置为undefined,就好像从未设置正确的值valueonChange一样。这段代码不会抛出任何错误,并且省去了我大量的输入:

代码语言:javascript
复制
<TextField
      hintText="Recipe Name"
      ref={r => this.recipeName = r}
      value = {this.props.id ? this.state.name : undefined}
      onChange = {this.props.id ? this.handleNameChange : undefined} />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39184641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档