Я пытаюсь обновить состояние редуктора в редукторе.Обновленное состояние не отображается в компоненте, даже если компонент подключен с помощью вызова «connect».
Вот код редуктора -
const INIT_STATE={fullData:[]}
export default createTaskReducer=(state=INIT_STATE,action)=>{
//console.log('from reducer')
switch(action.type)
{
case "createTask":fullData=state.fullData;fullData.push(action.payload);
return {...state,fullData}
case "delete":console.log("about to delete");
let allData=state.fullData.filter((value,index,arr)=>{return
value.id!==action.payload});
state.fullData=allData;
console.log(state);
return {...state};
default: return {...state}
}
}
Как вы можете видеть ввышеупомянутый редуктор, в «delete» я пытаюсь удалить некоторые записи из состояния, обновляя состояние с измененными данными, затем создавая новый объект состояния с теми же деталями.
Вот мои комбинаторные преобразователи -
export default combineReducers({
initial:dataList,
fullData:createTaskReducer,
latestId:generateId
})
После вызова редуктора, следующий компонент вызывается из-за изменения состояния.Однако я не получаю обновленное значение свойства 'fullData' состояния -
class TaskList extends React.Component{
constructor(props)
{
super(props);
}
renderListItem(singleItem)
{
//console.log(singleItem);
return <Task title={singleItem.item.title} desc={singleItem.item.desc}
dueDate= {singleItem.item.dueDate} id={singleItem.item.id}/>
}
componentWillMount()
{
if(this.props.init)
{this.props.loadInitialData();}
}
render()
{
if (this.props.init)
{this.props.fullData.fullData=this.props.initial.initialData}
console.log('printing...')
//NOT GETTING THE UPDATED STATE HERE !!
console.log(this.props);
let renderList=this.props.init?
this.props.initial.initialData:this.props.fullData.fullData;
let list=(renderList.length==0?(<View></View>):<FlatList data={renderList} renderItem={this.renderListItem}
keyExtractor={val=>val.id.toString()}></FlatList>);
return (
<View style={taskListStyle.containerStyle}>
{list}
<CustomButton title='+' onPressHandler={()=>{Actions.createTask()}}
type='round'
styleVal={{position:'absolute',bottom:0,alignSelf:'flex-end'}}/>
</View>
)
}
}
const mapStateToProps=(state)=>{
return state;}
const taskListStyle=StyleSheet.create({
containerStyle:{flex:1}})
TaskList.defaultProps={init:false}
export default connect(mapStateToProps,{loadInitialData})(TaskList)