reactjs - React 组件不刷新

标签 reactjs

我遇到一个问题,当我调用我传递的刷新函数时,我的页面没有刷新。

function ProductsPage(props) {
    const [products, setProduct] = useState([])
    const [shouldRefresh, setRefresh] = useState(false)

    function refreshProducts() {
        setRefresh(!shouldRefresh)
    }

    const token = localStorage.getItem("token")
    const headers = { Authorization: "Token " + token }

    useMemo(() => (axios.get("/products", { headers: headers }).then((resp) => (
        setProduct(resp.data)
    ))
    ), shouldRefresh)

    return (
        <Box className="cardDeck">
            <Redirect_if_not_logged_in />
            {products.map((product) => (
                <InfoCard product={product} refresh={refreshProducts}></InfoCard>
            )).reverse()}
        </Box>
    )
}

每当我从 InfoCard 调用 props.refresh() 时,什么也没有发生。

最佳答案

您需要使用 useEffect Hook 而不是 useMemo

function ProductsPage(props) {
  const [products, setProduct] = useState([]);
  const [shouldRefresh, setRefresh] = useState(false);

  function refreshProducts() {
    setRefresh(!shouldRefresh);
  }

  const token = localStorage.getItem("token");
  const headers = {
    Authorization: "Token " + token,
  };

  useEffect(() => {
    axios
      .get("/products", {
        headers: headers,
      })
      .then((resp) => setProduct(resp.data));
  }, [shouldRefresh]);

  return (
    <Box className="cardDeck">
      <Redirect_if_not_logged_in />
      {products
        .map((product) => (
          <InfoCard product={product} refresh={refreshProducts}></InfoCard>
        ))
        .reverse()}
    </Box>
  );
}

关于reactjs - React 组件不刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69868003/

相关文章:

reactjs - 在 React 中,为什么我无法使用嵌套箭头函数......尽管普通函数似乎可以工作?

javascript - 我是否总是需要从 redux 中间件返回一个值?

javascript - React-native Redux 组件不会在状态更改时使用 bool 值重新渲染

reactjs - 如何在 redux-thunk 中调度注册成功操作后执行 History.push 到另一个页面

javascript - 从 dom 中隐藏输入值属性

javascript - 如何根据 onChange 在 React 功能组件中重新渲染?

javascript - 使用 React-Hooks,如何防止从 Array.map 创建的组件在其中一个兄弟组件更改状态时重新呈现?

javascript - nextjs中router.pathname和router.route的区别

node.js - 无法使用 webpack 开发服务器中间件加载图像

javascript - 在 componentDidMount 中处理多个 axios get 请求