【问题标题】:What is returned?返回什么?
【发布时间】:2017-07-23 03:53:21
【问题描述】:

我正在阅读下面的示例中使用 React、Redux 和 Thunk 编写的 JavaScript:

在actions.js中创建动作:

function fetchPosts(subreddit){
    return dispatch => {
            dispatch(requestPosts(subreddit))
            return fetch(`...URL...`)
                    .then(response => response.json())
                    .then(json => dispatch(receivePosts(subreddit, json)))
    }
}

export function fetchPostsIfNeeded(subreddit) {
  return (dispatch, getState) => {
    if (shouldFetchPosts(getState(), subreddit)) {
      return dispatch(fetchPosts(subreddit))
    }
  }

“fetchPosts(subreddit)”返回什么?

我不明白“退货=>”是什么

这个函数是在容器中导入并用于调度动作,所以我 认为“dispatch”是从容器中的“react-redux”导入的函数,如下所示:

import {fetchPostsIfNeeded} from "../actions"
import {connect} from "react-redux"
...
componentDidMount() {
    const { dispatch, selectedSubreddit } = this.props
    dispatch(fetchPostsIfNeeded(selectedSubreddit))
  }
...

箭头前的“dispatch”是指函数“dispatch(requestPosts(subreddit))”吗?

dispatch 是 ES2015 缩写为“(dispatch)”的参数吗?

【问题讨论】:

    标签: reactjs redux react-redux redux-thunk


    【解决方案1】:

    来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

    // Parentheses are optional when there's only one parameter:
    (singleParam) => { statements }
    singleParam => { statements }
    

    因此,dispatch => {...} 正在制作一个带有一个参数 dispatch 的箭头函数。 fetchPosts(subreddit) 返回单个箭头函数。

    关于{ disppatch, selectedSubreddit } = this.props 的废话叫做解构赋值。手册:MDN Destructuring Assignment

    它的本质是:

    var o = {p: 42, q: true};
    var {p, q} = o;
    console.log(p); // 42
    console.log(q); // true
    

    所以是的,dispatch 是从 this.props 中提取出来的,这显然是一个 reactjs 组件! ReactJS Components and Props

    【讨论】:

    • 谢谢!我理解这个“调度”是一个函数,并返回一个箭头函数。当此函数中的所有“调度”都更改为其他名称时,此函数仍按您所说的那样工作。非常感谢!
    猜你喜欢
    • 2011-01-05
    • 2012-01-15
    • 2020-06-02
    • 2019-09-28
    • 2015-09-06
    • 2011-07-30
    • 2015-12-27
    • 2011-11-01
    • 1970-01-01
    相关资源
    最近更新 更多