React - 如何使用return语句作为prop传递函数

时间:2018-02-03 18:39:18

标签: javascript reactjs react-router react-props

我有一个奇怪的问题让我挠头。我试图从api获取数据并将返回的数据传递给使用React Router的组件(作为prop)。但是,返回的数据未定义'。

MyRoutes.js:

let refreshAvailability = (profile_index) => {
    let fetch = new DataFetch();
    fetch.get(`/info/${profile_index}`, (err, res) => {
        let username = res[Object.keys(res)[0]].username;
        if(username !== undefined) {
            setTimeout(() => {return getStatus(username)}, 0);
            setInterval(() => {return getStatus(username)}, 10000); //Refresh every 10 seconds
        }
    });
}

let getStatus = (username) => {
    let userStatus = new userStatus();
    userStatus.getStatus(available => {
        //If i place console.log(available) here it will print the result, but when i return it, its undefined.
        return available;
    });
}

const myRoutes = () => (
  <BrowserRouter>    
            <Route exact path='status/:profile_index' render={(props) => (
                <Status {...props} available={refreshAvailability} />
            )}/>
  </BrowserRouter>
);

export default MyRoutes;

Status.js:

componentDidMount(){
    let userIndex = this.getUserIndex();
    let userStatus = this.props.available(userIndex);

    console.log(userStatus); //This prints undefined
}

不知何故问题似乎出现在getStatus函数中。 如果我记录api的输出,我可以看到它登录状态组件,但当我返回它时返回&#39; undefined&#39;。

这让我想到React如何使用return语句作为prop来处理函数?与没有返回的函数传递有什么不同吗?或者我在代码中忽略了什么?

0 个答案:

没有答案