React native 使用react native中的reducer更新屏幕
我试图在任务中添加一张图片,然后更新平面列表以查看更新,但它不支持。如果我关闭并返回应用程序,它会工作。 如果我显示商店,我也会看到即时更新,但不会出现在屏幕上 以下是我代码的一部分: TaskImage.jsReact native 使用react native中的reducer更新屏幕,react-native,redux,reducers,redux-reducers,React Native,Redux,Reducers,Redux Reducers,我试图在任务中添加一张图片,然后更新平面列表以查看更新,但它不支持。如果我关闭并返回应用程序,它会工作。 如果我显示商店,我也会看到即时更新,但不会出现在屏幕上 以下是我代码的一部分: TaskImage.js openImageLibrary=async(task)=>{ const result = await ImageHelpers.openImageLibrary(); if(result){ const downloadUrl=
openImageLibrary=async(task)=>{
const result = await ImageHelpers.openImageLibrary();
if(result){
const downloadUrl=await this.uploadImage(result,task)
this.props.UpdateTaskImage({...task,uri:downloadUrl})
}
}
....
const mapStateToProps=state=>{
return{
tasks:state.tasks
};
}
const mapDispatchToProps=dispatch=>{
return{
loadTasks:tasks=> dispatch({type:'LOAD_TASKS_FROM_SERVER',payload:tasks}),
addTask:task=>dispatch({type:'ADD_TASK',payload:task}),
DeleteTask: task=>dispatch({type:'DELETE_TASK',payload:task}),
UpdateTaskImage:task=>dispatch({type:'UPDATE_TASK_IMAGE',payload:task})
}
}
TasksReducer.js:
const initialState={
tasks:[],
image:null
}
const tasks=(state=initialState,action)=>{
switch(action.type)
{
case 'LOAD_TASKS_FROM_SERVER':
return{
...state,
tasks:action.payload
};
case 'UPDATE_TASK_IMAGE':
return{
...state,
tasks:state.tasks.map(task=>{
if(task.task==action.payload.task)
{
return {...task,image:action.payload.uri}
}
return task
})
}
default:
return state;
}
};
export default tasks;
有什么想法吗?看到更多的代码会有帮助,但我想我看到的是。redux更新后,Flatlist项如何更新?我认为可能是您的问题是,平面列表道具也没有映射到redux状态,或者直接从该组件的
任务道具传递下来。当平面列表的数据
属性更改时,平面列表将重新呈现,因此请确保情况属实
除此之外,请确保在任何情况下都正确使用了redux。我想您可能错过了对connect
函数的调用。请参阅,其中使用了此示例:
// TodoList.js
function mapStateToProps(state) {
const { todos } = state
return { todoList: todos.allIds }
}
export default connect(mapStateToProps)(TodoList)
可以您是否有一个示例?您是否将任务
道具复制到某个组件状态?这将导致更新延迟。