Поэтому у меня есть вопрос, касающийся зависимостей useEffect
Это из документов реагирования:
useEffect(() => {
document.title = `You clicked ${count} times`;
}, [count]); // Only re-run the effect if count changes
Что это означает точно, отслеживает ли React переменную count
и его значение и реагирует на изменение значения, или React отслеживает первый элемент в массиве и его значение.
Что я имею в виду под этим? Позвольте мне объяснить больше. Так что если у нас есть что-то вроде [name]
в качестве зависимостей. В момент оценки массив может иметь результат ['Bob']
или ['Steve']
. Очевидно, что это изменение, и useEffect будет перерисовывать компонент. Но как это проверить?
Отслеживает ли name
или отслеживает dependencyArray[0]
. Если мы посмотрим в предыдущем примере, оба из них приведут к true, name
и first element
оба изменили свои значения с 'Bob'
на 'Steve'
. Но как это на самом деле работает?
В настоящее время в моем коде я использую что-то вроде этого [employees[selectedEmployee].name]
, где selectedEmployee
- это что-то нажимаемое в пользовательском интерфейсе, и оно становится 'Bob' или 'Steve'
ex:
const employees = {
Bob: {
name: 'Bob'
},
Steve: {
name: 'Steve'
}
}
Это означает, что в конце, при оценке, массив зависимостей будет по-прежнему иметь значение ['Bob']
-> ['Steve']
, и если React оценивает dependencyArray[0]
тогда это явно изменилось, и компонент должен повторно отображаться, но если он отслеживает ссылку, то я полностью изменяю ссылку, и это может вызвать проблемы.
Так какой же правильный подход? Могу ли я использовать динамические c свойства, такие как employees[selectedEmployee].name
, в качестве зависимости?