Мой компонент (UI материала TransferList) получает props.selectedItems как массив ранее выбранных Предметы. И в props.Items у меня есть все доступные предметы.
Я ожидаю увидеть props.selectedItems на левой панели TransferList. Однако левая панель пуста, а правая - заполнена, хотя я поместил туда только оставшиеся элементы.
function TransferList(props) {
// props.items = [0,1,2,3,4,5,6,7]
console.log(props.selectedItems); // [2, 6]
let remainingItems = not(props.items, props.selectedItems);
console.log(remainingItems); // [0,1,3,4,5,7]
const [checked, setChecked] = useState([]);
const [right, setRight] = useState(remainingItems);
const [left, setLeft] = useState(props.selectedItems);
console.log(right); // [0,1,2,3,4,5,6,7] ?????????????????????????!!!!!!!!!!!!
console.log(remainingItems); // [0,1,3,4,5,7]
console.log(left); // [] ?????????????????????????!!!!!!!!!!!!
...
Когда я попробовал useEffect (из этого вопроса), это не так. Помоги мне:
... // the same code above
useEffect(() => {
let remainingItems = not(props.items, props.selectedItems);
setRight(remainingItems);
setLeft(selectedItems);
console.log(right); // [0,1,2,3,4,5,6,7] ?????????????????????????!!!!!!!!!!!!
console.log(remainingItems); // [0,1,3,4,5,7]
console.log(left); // [] ?????????????????????????!!!!!!!!!!!!
}, [props.items, props.selectedItems]);
...
Кроме того, когда я использую простой массив, не получая его из реквизита, все работает отлично!
function TransferList(props) {
items = [0,1,2,3,4,5,6,7];
selectedItems=[2,6];
let remainingItems = not(items, selectedItems);
console.log(remainingItems); // [0,1,3,4,5,7]
const [checked, setChecked] = useState([]);
const [right, setRight] = useState(remainingItems);
const [left, setLeft] = useState(selectedItems);
console.log(right); // [0,1,3,4,5,7]
console.log(remainingItems); // [0,1,3,4,5,7]
console.log(left); // [2,6]
...
Что здесь происходит? )))