export default function App() {
const [taskList, setTaskList] = useState([])
const changeStatusDone = (id) => {
setTaskList(taskList => {
const newList = taskList.slice();
const index = newList.findIndex(i => i.id === id);
if (index !== -1) {
newList[index].done = !newList[index].done;
}
return newList;
});
}
const settingsHandler = (id, title, description) => {
Alert.alert(title, description, [
{
text: "Yes", onPress: () => setTaskList((value) => {
return value.filter(taskList => taskList.id != id)
})
},
{text: "No"}
])
}
return (
<NavigationContainer>
<taskListContext.Provider value={[taskList, setTaskList]}>
<changeStatusDoneContext.Provider value={(changeStatusDone)}>
<settingsHandlerContext.Provider value={(settingsHandler)}>
<Tab.Navigator screenOptions={{headerShown: false}}>
<Tab.Screen name="HomeStack" component={HomeStackScreen}/>
<Tab.Screen name="SettingsStack" component={SettingsStackScreen}/>
</Tab.Navigator>
</settingsHandlerContext.Provider>
</changeStatusDoneContext.Provider>
</taskListContext.Provider>
</NavigationContainer>
);
}
export const taskListContext = createContext([]);
export const changeStatusDoneContext = createContext([]);
export const settingsHandlerContext = createContext([])
Подскажите пожалуйста, возможно ли не создавать 3 контекста, а передать всё в одном?
Я видел что можно передать что-то вроде value={(value1,value2,value3,value4)}>
Но тут проблема в том, что на выходе получается вот так
const [value1,value2,value3,value4] = useContext(taskListContext);
А необходимо
const [value1,value2] = useContext(taskListContext);
const [value3,value4] = useContext(taskListContext);
Как-то это можно сделать?