За исключением редких случаев использования, вы не должны вызывать setState
непосредственно в методе визуализации ваших компонентов, и если вы делаете это, вам нужно быть осторожным, чтобы выбрать правильное условие для этого.
Обычно это так, если ваше состояние зависит от реквизита, предоставленного компоненту.Метод жизненного цикла компонента на основе класса называется getDerivedStateFromProps
.Здесь вам это не нужно.
Похоже, вы пытаетесь сузить результат от конечной точки API.Преобразование может быть выполнено в обратном вызове fetch перед вызовом setPosts
:
useEffect(() => {
fetch("/index.json")
.then(response => response.json())
.then(function(data) {
const allPosts = data.data.allContentfulPost.edges;
const options = {
shouldSort: true,
threshold: 0.6,
location: 0,
distance: 100,
maxPatternLength: 32,
minMatchCharLength: 1,
keys: ["node.title", "node.meta"],
}
const fuse = new Fuse(allPosts, options)
const found = fuse.search("marketing")
setPosts(found);
})
}, [])