【问题标题】:Two lodash set in one function?两个lodash集在一个功能中?
【发布时间】:2018-01-11 20:46:10
【问题描述】:

这可以在一个条件下实现两个集合功能吗?我的目标是创建 3 个按钮调用一个函数.. 用首选条件更改 this.state.status。

'all' = null(这是我的目标,我的参数默认应该是 status=null 或 '')并且我想要我的 this.state.status: null

'批准'=批准(status=approve)我的this.state.status中的目标:批准

'progress' = progress (status=progress) 我在 this.state.status 中的目标:进度

    this.state = {
      status: '',
    }
  }

//---------------------button sort--------------------------//
  onButtonChange = ( status, value) => {
    setTimeout(() => AppActions.loadingMask(true))

    if (status === 'all')
    {
      _.set(this.state.data, status, null).set(this.state.status, status, ' ')
     // status = null - my goal is the this.state.status: ' '
    }

    else if (status ==='approve')
    {
      _.set(this.state.data, status, 'approve').set(status, this.state.status, 'approve')
       // status = approve - my goal is the this.state.status: approve
    }
    else if (status === 'progress')
    {
      _.set(this.state.data, status, 'progress').set(status, this.state.status, 'progress')
      // status = progress - my goal is the this.state.status: progress
    }
    BookingsTripsAction.getTrips(
      this.DEFAULT_LIMIT,
      this.state.activePage,
      _.get(this.state.data, status, status))
  }


  <Col>
    <Paper>
      <FlatButton label="All" style={{margin: 12, borderBottom:(this.state.status == 'all' ? '1px solid #2196f3' : 0)}} onTouchTap={this.onButtonChange.bind(this, 'all')}  />
      <FlatButton label="Approve" style={{margin: 12, borderBottom:(this.state.status == 'approve' ? '1px solid #2196f3' : 0)}} onTouchTap={this.onButtonChange.bind(this, 'approve')} />
      <FlatButton label="In-Progress" style={{margin: 12, borderBottom:(this.state.status == 'progress' ? '1px solid #2196f3' : 0)}} onTouchTap={this.onButtonChange.bind(this, 'progress')}  />
    </Paper>
  </Col>

【问题讨论】:

    标签: reactjs ecmascript-6 lodash material-ui


    【解决方案1】:

    来自reactjs 文档:

    不要直接修改状态。

    它不会重新渲染您的组件。为此,请始终使用setState()。阅读how to use state correctly上的文档。

    【讨论】:

    • 嗨@trinx 你指的是lodash _.set 吗?
    • @MikeVictoria 你不应该用setState() 以外的任何东西来改变状态。也没有 lodash _set() 因为这也是直接改变状态并且不会调用状态更改背后的所有反应逻辑。阅读文档并完成 reactjs 教程。那里解释得很好。
    • 嗨@trinx 感谢您的帮助 :) 我还是 React JS 新手
    【解决方案2】:

    使用 setState

    if (status === 'all' || status === null)
        {
         this.setState({data:''});
        }
    
        else if (status ==='approve')
        {
    
         this.setState({data:status});
        }
        else if (status === 'progress')
        {
         this.setState({data:status});
    
        }
    

    【讨论】:

    • 谢谢伙计 :) 干得好,我仍然将 this.setState({ data:}) 修改为 this.setState({status:})
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 2016-05-07
    相关资源
    最近更新 更多