2017-08-04 53 views
2

這是可能使兩個功能在一個條件下?我的目標是創建3個按鈕,調用一個函數..以首選條件更改this.state.status。兩個lodash設置在一個功能?

'所有'= NULL(這是我的目標,我的PARAMS默認的應該是狀態= null或 ' '),我想我的this.state.status:空

' 批准'=批准(狀態=在我this.state.status批准)我的目標:批准

'進步'=進度(狀態=進度)我的目標在我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> 

回答

0

使用的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}); 

    } 
+1

謝謝男人:)偉大的工作我仍然Modifiy this.setState({數據:})在this.setState({status:}) –

+0

是啊,我忘了,.....它需要像'this.setState({status:})' – Hemakumar

1

reactjs文檔:

不要直接修改狀態。

它不會重新呈現您的組件。爲此,始終使用setState()。請閱讀how to use state correctly

+0

嗨@trinx你與lodash _.set也指? –

+0

@MikeVictoria你不應該用'setState()'來改變狀態。也沒有lodash'_set()',因爲這也直接改變狀態,並且不會調用狀態改變後面的所有反應邏輯。閱讀文檔並執行reactjs教程。這裏有很好的解釋。 – trixn

+0

嗨@trinx感謝您的幫助:)我還是新的在React JS –