Javascript 如何从子级调用父级函数而不更新父级状态?

Javascript 如何从子级调用父级函数而不更新父级状态?,javascript,reactjs,react-hooks,jsx,Javascript,Reactjs,React Hooks,Jsx,在React 16.X中,我的父组件中有函数: const fetchData=()=>{ 返回ajax .get({},数据) 。然后((响应)=> { 设置状态(响应); //这里我用setState()更新状态 }) .catch((错误)=> { }); }; 现在我在道具中将其传递给我的孩子: 在我的孩子身上,我赞同: const{fetchData}=props; //从我父母那里 但是当我从我的孩子那里调用这个fetchData时,它会更新我父母的状态(因为setState

在React 16.X中,我的父组件中有函数:

const fetchData=()=>{
返回ajax
.get({},数据)
。然后((响应)=>
{
设置状态(响应);
//这里我用setState()更新状态
})
.catch((错误)=>
{
});
};
现在我在
道具中将其传递给我的孩子:


在我的孩子身上,我赞同:

const{fetchData}=props;
//从我父母那里
但是当我从我的孩子那里调用这个
fetchData
时,它会更新我父母的状态(因为
setState
)。我只想重用
fetchData
函数从API获取数据,而不是更改父级的状态


有没有可能实现这一点?我希望重用函数
获取数据
,但不更新父状态。

如果您遇到以下问题:

请使用以下方式接通:

//define a function that only returns the request

const request = () =>{
    return ajax
           .get({},data);
};

//In anywhere else use it like this in main function

const fetchData = async ()=> {
    const request = this.request();

    return request
    .then((response) =>
        {
            setState(response);
            // Here I update the state with setState()
        })
        .catch((error) =>
        {
        });
};

//Or pass it in the props to use in the child component as
//In parent
<Abc requestFunc={this.request}/>

//and in Abc Component

const abc= (props)=>{
    const requestCall = {props}
}

//call requestCall

requestCall().then....
//定义一个只返回请求的函数
常量请求=()=>{
返回ajax
.get({},数据);
};
//在其他任何地方,在main函数中都像这样使用它
const fetchData=async()=>{
const request=this.request();
退货申请
。然后((响应)=>
{
设置状态(响应);
//这里我用setState()更新状态
})
.catch((错误)=>
{
});
};
//或者将其传递到道具中,以作为子组件使用
//父母
//在Abc部分
常量abc=(道具)=>{
const requestCall={props}
}
//呼叫请求呼叫
requestCall()。然后。。。。

不要让
setState
命令成为函数的一部分,而是将函数限制在请求本身(即,让它只返回ajax.get调用)。然后在子组件中使用
props.fetchData()。然后(response=>…)
。或者,将正确的
setState
方法作为参数传递给
fetchData
。我知道这是一个非常基本的解决方案,但如果项目发展成巨大的文件,是否有其他方法来实现这一点@克里斯维尔,这也是一个非常基本的问题:)我不知道为什么项目规模会很重要;我的解决方案创建了一个通用函数来获取数据,这使它非常适合大型项目。我不确定你在这里还能想到什么解决方案?好吧,我明白我可能会很难接受。好的,我会看看你建议的改变,并尝试这种方法。