#reactjs #react-hooks #use-effect
Вопрос:
Я создал многоразовый компонент, который используется несколькими шаблонами потребителей. И шаблоны передают реквизиты с разными значениями. шаблон-А передается propA = { name: "John"}
, в то время как шаблон-В не передает propA. И компонент выполняет вызов API в useEffect
методе на основе переданного propA, где он устанавливает значение по умолчанию для propA в качестве пустого объекта. проблема здесь в том, что шаблон-B дважды вызывает вызов API. Я предполагаю, что это связано с тем, что, поскольку шаблон-B не передает propA, значение propA изменяется с неопределенного на пустой объект по умолчанию. Как бы вы справились с этим сценарием, чтобы избежать многократных вызовов API?
Компонент
const defaultVal = {};
const Component = ({ propA = defaultVal}) => {
useEffect(() => {
fetch("url").then((data) => {
setData(data)
})
}, [propA])
};
Шаблон — А
<Component propA = {{ name: "John"}} />
Шаблон — В
<Component />
Любая помощь будет признательна, заранее спасибо!
Комментарии:
1. Учитывая , как вы определили
<Component />
,propA
никогда не будетundefined
. Таким образом, ваше предположение о том, что проблема возникает из-за того, что она переключается с неопределенного значения на значение по умолчанию , не может быть правильным. Должен быть какой-то другой источник проблемы. Может быть, вы рендерите свое приложение в строгом режиме?2. @Yoshi Хорошо, так какова была бы ценность propA, если бы я ее не сдал.
3. Текущее значение
defaultVal
.4. Ммм, это правда.
5. Вопрос: но действительно ли необходимо иметь
propA
вuseEffect
списке deps? Я не вижу никаких зависимостей в коде useEffect (но, может быть, вы написали просто пример, код более сложный…)