Допустим, у меня есть таблица с данными сортировки, и я хочу сохранить ее в состоянии (или даже в 3 отдельных состояниях). Предположим, это состояние может быть изменено ребенком.
Есть ли способ сделать это , не имея 3 различных useEffects , я хотел бы узнать, возможно ли достичь того же, что и ниже, с только 1 эффектом использования
import React, { useState, useEffect } from "react";
function Table({ initialSortDirection, initialSortParam, initialSortEnabled }) {
const [currentSortData, setSortData] = useState({
sortDirection: initialSortDirection,
sortParam: initialSortParam,
hasSort: initialSortEnabled
});
useEffect(() => {
setSortData({ ...currentSortData, sortDirection: initialSortDirection });
}, [initialSortDirection]);
useEffect(() => {
setSortData({ ...currentSortData, sortParam: initialSortParam });
}, [initialSortParam]);
useEffect(() => {
setSortData({ ...currentSortData, hasSort: initialSortEnabled });
}, [initialSortEnabled]);
return (<SomeComponent onChangeSort={setSortData} />)
}
По старому стилю я, вероятно, использовал бы componentWillReceiveProps и просто сравнил бы nextProps, чтобы увидеть, изменились ли они, но сейчас мне сложно найти краткий способ сделать это "сразу" и только при изменении .
В качестве наглядного примера рассмотрите изображение ниже, вы можете изменить сортировку, щелкнув по ячейке или изменив «ручки».
РЕДАКТИРОВАТЬ 1
Предположим, что другие состояния могут повлиять на состояние, и я не хочу переопределять обновленное состояние неизменным начальным пропеллером. Я обновил код соответственно
РЕДАКТИРОВАТЬ 2
Добавлена картинка в сборник рассказов