reactjs - 避免在组件加载时对组件使用多个 useEffect

我在我的 React 应用中构建了一个简单的点赞、书签功能。

const [liked, setLiked] = useState();
const [bookmarked, setBookmarked] = useState();

  useEffect(() => {
    post.liked ?  setLiked(true):  setLiked(false);
    post.bookmarked ?  setBookmarked(true) : setBookmarked(false);
  }, []);

  useEffect(() => {
    axios.post(`${baseURL}/content/like`).then((res) => console.log(res));
  }, [liked]);

每当组件加载时,useEffect 都会运行两次

如何避免初始 axios post 和 axios 仅在状态发生变化时才发布?

每当 liked 状态改变时,我想发送一个 post 请求。

最佳答案

您无法避免多次执行 useEffect Hook 。每次 liked 值更改时都会调用该函数,但是,您可以在调用 axios.post 之前检查 liked 值以防止创建请求喜欢状态的初始化状态:

const [liked, setLiked] = state(false);
...
useEffect(() => {
  if (liked) {
    axios.post(`${baseURL}/content/like`).then(res => console.log(res));
  }
}, [liked]);

https://stackoverflow.com/questions/63068579/

相关文章:

javascript - 在嵌套导航器中导航时未定义 route.params?

perl - 使用 sed 或 perl 替换两个字符之间的多个字符

python - GoogleTrans Python 不翻译

javascript - 如何为 Angular Material Slide Toggle 设置默

c - 用C写的小程序

css - Marp-CLI : How to use a custom theme that im

java - 在 GitLab CICD 中注入(inject) application.prope

javascript - 将变量传递给自定义 Svelte Web 组件

python - pandas Groupby 求和并连接

python - 如何在 Python 中使用正则表达式将所有内容匹配到双换行符 "\n\n"?