代码之家  ›  专栏  ›  技术社区  ›  whitebear

尽管调用了集合***,但不会执行函数组件重新渲染

  •  0
  • whitebear  · 技术社区  · 2 年前

    我的剧本如下,

    在api获取项目后,我想重新发送组件并 EnhancedTable appered。

    然而这个脚本,api获取成功,但EnhancedTable并没有出现。

    response.data返回正确的数据,但不会执行重新渲染。

    我哪里错了?

    const MetaPanel = (props) =>{
        const [drawingItems,setDrawingItems] = React.useState([]);
        
        useEffect(() => {
            console.log("File List");
            var formData = new FormData();
            axios.defaults.xsrfHeaderName = "X-CSRFTOKEN";
            axios.defaults.xsrfCookieName = "csrftoken";
            axios.defaults.withCredentials = true;
            axios.get(`/api/drawings/`)
                
            .then(function (response) {
                console.log(response.data);
                setDrawingItems(response.data);
              
            })
            .catch(function (response) {
                console.log(response);
            });
        },[]);
        
        
        return (
        <div>
        <div>
            <p>FileList</p>
            {drawingItems.length != 0 &
               
                <EnhancedTable data={drawingItems}></EnhancedTable>
            }
        </div>
        </div>
    
        );
    }
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   rnewed_user    2 年前

    你能试试这个吗

    <div>
            <p>FileList</p>
            {drawingItems &&
                <EnhancedTable data={drawingItems}></EnhancedTable>
            }
        </div>
    

    顺便说一句,你可以改进useEffect部分

    useEffect(() => {
            const fetchData= async()=>{
              const response = await axios.get(`/api/drawings/`)
              if(response){
                setDrawingItems(response?.data);
              }
            }
           fetchData() 
        },[]);