【问题标题】:unable to read returned data from function无法从函数读取返回的数据
【发布时间】:2022-01-27 19:23:15
【问题描述】:

我正在使用 reactJS。

我有一个看起来像这样的子组件:

const Child = ({callback}) => {
    const handleSubmit = async e => {
        console.log(await callback()); //callback returns an async value
    }
    return (
        <div> some stuff here </div>
    )
}
export default Child;

我在父组件上使用我的子组件,例如:

const Parent = () => {
    const sendSomeDataToServer = () => {
        axios({
             //some stuff here...
        })
        .then((res) => return {serverInfo: 'OK'})
        .catch((err) => {
            if(err.response.status < 500)
                return {serverInfo: 'e.response.data'}
            else
                return {serverInfo: 'Unexpected error'}
        }
    }

    return (
        <Child callback={sendSomeDataToServer} />
    )
}
export default Parent;

但我不知道为什么sendSomeDataToServer 的返回值总是未定义...

看起来 await 没有按预期工作,知道如何解决这个问题吗?

【问题讨论】:

    标签: reactjs async-await axios


    【解决方案1】:

    你忘记在axios之前添加return语句

    您没有从 sendSomeDataToServer 函数返回任何内容。

    const Parent = () => {
        const sendSomeDataToServer = () => {
          return  axios({
                 //some stuff here...
            })
            .then((res) =>  ({serverInfo: 'OK'}))
            .catch((err) => {
                if(err.response.status < 500)
                    return {serverInfo: 'e.response.data'}
                else
                    return {serverInfo: 'Unexpected error'}
            }
        }
    
        return (
            <Child callback={sendSomeDataToServer} />
        )
    }
    

    【讨论】:

    • 您是否故意删除了 then 中的 return 语句?
    • 如果使用箭头函数,则不需要返回语句。
    猜你喜欢
    • 1970-01-01
    • 2015-06-16
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    相关资源
    最近更新 更多