reactjs 我如何在next js中使用子组件中父组件的函数中的数据

g6baxovj  于 2023-03-08  发布在  React
关注(0)|答案(1)|浏览(150)

我是react和nextjs的新手,我想在另一个组件(component1)中使用“response”(在父组件的函数中)。

function func1(props) {
    
    
    function handleSubmit(e) {
        e.preventDefault();
        var formData = new FormData(e.target);
        const form_values = Object.fromEntries(formData);
        axios.get(`here is my url`,{
            params : form_values,
            headers: {
                'Content-Type': 'text/html',
                'Access-Control-Allow-Origin': '*',
                'Access-Control-Allow-Methods':'GET',
              },
        }).then(function (**response**) {
            console.log(response.data);
        })
        .catch(function (error) {
            console.error(error);
        });
        
      }

    return ( 
        <component1 data={**response**} />

    )

export default func1;

我不知道什么是最好的解决办法。

olmpazwi

olmpazwi1#

这可以通过将数据存储在state中来实现,当axios完成时,更新状态变量,并将此状态作为一个属性传递给组件。
例如,如果您的数据是一个数组,则可以使用以下方法:

import React, { useState } from 'react';

function func1(props) {
    
    const [data, setData] = useState([]);
    
    function handleSubmit(e) {
        e.preventDefault();
        var formData = new FormData(e.target);
        const form_values = Object.fromEntries(formData);
        axios.get(`here is my url`,{
            params : form_values,
            headers: {
                'Content-Type': 'text/html',
                'Access-Control-Allow-Origin': '*',
                'Access-Control-Allow-Methods':'GET',
              },
        }).then(function (response) {
            setData(response.data);
        })
        .catch(function (error) {
            console.error(error);
        });
        
      }

    return ( 
        <component1 data={data} />

    )

export default func1;

根据在component1中执行的操作,您可能需要在使用数据之前检查它是否为空数组。
旁注:像这样设置头文件Access-Control-Allow-*就是将它们设置为request头文件,并且不会绕过CORS。这些头文件必须由服务器在响应中设置。

相关问题