Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 什么导致重新渲染?如何避免呢_Reactjs_Redux_React Redux_React Hooks - Fatal编程技术网

Reactjs 什么导致重新渲染?如何避免呢

Reactjs 什么导致重新渲染?如何避免呢,reactjs,redux,react-redux,react-hooks,Reactjs,Redux,React Redux,React Hooks,我在React、Redux和Hooks的实现中遇到了一些问题 我不知道如何避免这种情况: import React, { useEffect } from "react"; import { useSelector, useDispatch } from "react-redux"; import * as R from "ramda"; function Main() { const mainBanners = useSelector(state => state.mainBann

我在ReactReduxHooks的实现中遇到了一些问题

我不知道如何避免这种情况:

import React, { useEffect } from "react";
import { useSelector, useDispatch } from "react-redux";
import * as R from "ramda";

function Main() {
  const mainBanners = useSelector(state => state.mainBanners);
  const features = useSelector(state => state.features);
  const banners = useSelector(state => state.banners);

  const dispatch = useDispatch();

  useEffect(() => {
    dispatch(fetchMainBanners());
    dispatch(fetchFeatures());
    dispatch(fetchBanner());
  }, [dispatch]);

  console.log(features);

  return (
    <div className="Main">
      {R.isEmpty(mainBanners || features) ? (
        <p>Loading...</p>
      ) : (
        <MainBanner mainBanners={mainBanners} features={features} />
      )}

      <Banners banners={banners} />
    </div>
  );
}

export default Main;
import React,{useffect}来自“React”;
从“react-redux”导入{useSelector,useDispatch};
从“拉姆达”以R的形式导入*;
函数Main(){
const mainbaners=useSelector(state=>state.mainbaners);
const features=useSelector(state=>state.features);
const banners=useSelector(state=>state.banners);
const dispatch=usedpatch();
useffect(()=>{
分派(fetchmainbaners());
分派(fetchFeatures());
调度(fetchBanner());
},[发送];
console.log(特性);
返回(
{R.isEmpty(主横幅| |特征)(
加载

) : ( )} ); } 导出默认主;
此示例的结果
console.log
如下所示:


您有三个不同的
useSelector
调用,您正在为三组不同的数据执行回迁。因此,是的,我预计这将导致总共四个单独的渲染:

  • 初始渲染
  • 获取
    mainbaners
    后渲染
  • 获取
    特征
    后渲染
  • 获取
    横幅
    后渲染

  • 这是基于您编写的代码的预期结果,一般来说也可以,因为当这些更改中的任何一个更改时,您的组件可能希望呈现不同的内容。

    您有三个不同的
    useSelector
    调用,并且您正在为三组不同的数据执行回迁。因此,是的,我预计这将导致总共四个单独的渲染:

  • 初始渲染
  • 获取
    mainbaners
    后渲染
  • 获取
    特征
    后渲染
  • 获取
    横幅
    后渲染

  • 这是基于您编写的代码的预期结果,一般来说也可以,因为当这些更改发生时,您的组件可能希望呈现不同的内容。

    您试图避免什么?为什么重播对你不好?你想避免什么?为什么重播对你不好?