2016-06-01 13 views
-2

私はReduxとのReact-Nativeプロジェクトを持っています。リストビューは状態更新後に新しい項目を表示しません

コンポーネント「ParentComponent」に「コメント」が埋め込まれています。

コメントを追加した後私の「コメント」コンポーネントは、更新された状態を受け取り、小道具で新しい配列でRender関数を呼び出します。しかし、新しいセルをlistViewに描画しないでください。

マイActionCommentsコード

でaddComment:

if(parent_id){ 
    commentsList[parent_index].responses.push(responseObject) 
}else{ 
    commentsList.splice(0, 0, responseObject) 
} 
Actions.pop() 

var newList = commentsList 
dispatch(commentsListUpdate(newList)) 

CommentListUpdate:

function commentsListUpdate(list) { 
    return { 
    type: types.COMMENTS_LIST_UPDATE, 
    list 
    }; 
} 

マイリデューサー:

case types.COMMENTS_LIST_UPDATE: 
    return { 
    ...state, 
    isFetching: false, 
    list: action.list 
    }; 

マイコンポーネント:

class Comments extends Component { 
    render(){ 
    let ds = new ListView.DataSource({ 
     rowHasChanged: (r1, r2) => r1 !== r2 
    }); 
    let dataSource = ds.cloneWithRows(this.props.list); 

    return (
     <ListView 
     dataSource={dataSource} 
     renderRow={this._renderRow.bind(this)} 
     /> 
    ) 
    } 

    _renderRow(rowData: string, sectionID: number, rowID: number) { 
     return (
      <View style={Styles.viewStyle}> 
       <Comment 
        name={rowData.user.full_name} 
        avatar={rowData.user.photo_dir} 
        comment={rowData.content} 
        list={rowData.responses} 
        dispatch={this.props.dispatch} 
        owner_id={this.props.owner_id} 
       /> 
      </View> 
     ) 
    } 
} 
+1

あなたのコードのビットを共有してもらえ:代わりに、新しい配列を返さなければなりませんか?特に、データソースを更新する部分。 –

答えて

0

還元剤を教えてもらえますか?あなたは状態の再来が古い状態と新しい状態の違いを見ることはできません変異する場合

case 'ADD_ITEM': 
    return state.push(item) 

:私はあなたがこのような新しい要素を押すことで状態をミュートにしていると思います。

case 'ADD_ITEM': 
    return [...state, item] 

編集compiled code

case 'ADD_ITEM': 
    return [].concat(state, [item]) 
+0

答えをいただきありがとうございます、私は私のコードを私のメインポストに入れます – Fuertes

+0

どうすればそれを私のコードに適用できますか?私の州にはリストが隠されています。 'CONST初期状態= { リスト:[]、 isFetching:偽、 };私は試す ' – Fuertes

+0

: 'ケースtypes.COMMENTS_LIST_UPDATE: リターン{...状態、 isFetching:偽、 リスト:[ ]私はそれが問題ではないと思う私のコンポーネントの呼び出しは、関数をレンダリングし、新しい項目で状態のリストを持っているが、新しい要素のリストを描画しないでください。 – Fuertes

関連する問題