您是否在React组件中使用纯函数或不纯函数?

时间:2018-01-24 17:02:33

标签: javascript reactjs functional-programming

所以我对函数式编程和不变性有了更多的了解。

编写react组件时我经常做的是一个辅助函数,它返回基于props / state的东西。

目前我写的是Pure和Impure函数,尽管它们中的大部分都是纯粹的。

两种情况的例子:

//pure function
const posts = this.props.posts;
const postId = this.props.selectedPostId;
const pureFunc = (postId, posts) => (posts.find(post => post.id === postId);

//impure function
const impureFunc = () => (
      this.props.posts.find(
          post => post.id === this.props.selectedPostId
      )
)

请允许我们不要评论代码的整体结构和有效性。

比较的主要方面是传递参数并对那些OR传递来自this上下文的东西,这不像一个全局状态,但它确实感觉不像函数式编程。

您更喜欢和想到什么?

1 个答案:

答案 0 :(得分:0)

使用第二种方法,您将结合类似OOP和函数样式,因此它不是真正的功能。

通过编写无状态的反应组件,可以避免完全使用this上下文,这些组件基本上都是纯函数。

如果那是不可能的,我建议使用第一种方法 - 即将道具传递给函数,而不是让函数本身访问this上下文。