我有一个Redux的React-Native项目。
我有组件"评论"嵌入组件" ParentComponent"。
添加评论后我的评论"评论"组件接收更新的状态,并使用props中的新数组调用Render函数。但是不要在listView上绘制新单元格。
我的行动评论代码
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>
)
}
}
答案 0 :(得分:0)
你能告诉我们你的减速机吗?我认为你通过推动这样的新元素来缓和状态:
case 'ADD_ITEM':
return state.push(item)
如果改变状态,redux将不会看到OLD状态和NEW状态之间的区别。相反,你必须返回一个新数组:
case 'ADD_ITEM':
return [...state, item]
修改(compiled code)
case 'ADD_ITEM':
return [].concat(state, [item])