【问题标题】:Should I use states from redux (connect) in my component or pass down props from the parent component?我应该在我的组件中使用来自 redux (connect) 的状态还是从父组件传递 props?
【发布时间】:2017-11-24 17:59:33
【问题描述】:

显然我不再使用本地状态,因为我的状态现在包含在 Redux 容器中。

但对于无状态组件,我只是使用 props 传递他们需要的数据。

我想验证这是否可以?

下面是一个无状态组件的示例,它从其父级接收数据并将数据向下传递给其子级。

父元素正在使用 Redux。 (未显示)。

在哪里有这个很好的参考吗?即文档?

import React from 'react';
import FrameFaveTagFave from './FrameFaveTagFave.jsx';

const FrameFaveTag = function(props) {
  const bookmarks = props.bookmarks.map((bookmark) =>
    <FrameFaveTagFave bookmark={bookmark} key={bookmark.id} />
  );
  return (
    <div className="bookmark_page" id="{props.tag}" >
      <div className="bookmark_tag_title">
        <p className="bookmark_tag_title_p">
          {props.tag}
        </p>
      </div>
      {bookmarks}
    </div>
  )
}

export default FrameFaveTag;

【问题讨论】:

  • 您好,欢迎来到 SO。问题“我想验证这是否可以?”过于模糊,无法满足社区准则,因此请更新您的问题和标题,以避免争论和广泛解释的方式准确阐明您的意思。还有对“在哪里有很好的参考吗?即文档?”的请求。在 SO 上总是跑题。

标签: javascript reactjs redux


【解决方案1】:

这取决于您遵循的约定。每当我制作应用程序时,我喜欢将与应用程序的多个部分相关的状态保留在 redux 中。假设您在为用户帐户信息、权限信息等挂载您的应用程序时获取数据,我希望将这些数据置于我可以在应用程序中的任何位置访问的 redux 状态。但是假设一个状态只对一个组件有意义,我想把它放在组件的状态中。一个示例可以是您打开/关闭模式或第三个窗格等。您也可以将其置于 redux 状态,但将其置于 React 组件的状态确实有意义。如果您想让应用程序中的所有内容都成为功能组件,您不妨看看recompose 及其实用方法。 This redux 作者的回答将为您提供更多关于何时绝对应该在应用程序中将状态存储在 redux 中的见解。

编辑:

如果我们应该在组件中使用 connect 还是从父级传递道具之间进行比较,那么我倾向于使用 passing from parent 比连接好一点,因为尽管 connect 使组件只监听组件的相关状态更改然后重新渲染,但它必须进行比较检查与该组件相关的状态是否已更改。

【讨论】:

  • 这个答案有点离题,因为我问的是无状态组件以及发送数据的最佳实践是什么——通过 props 或通过 redux。它没有本地状态。它只是呈现数据。
  • 我在我的应用程序中使用recompose 并将几乎每个组件都编写为无状态,然后使用实用程序进行包装。此外,您提出的问题是基于意见的。我不知道我说对了多少,但我倾向于在我的应用程序中很少使用connect。尽管connect 只会监听与其相关的状态变化(在组件中),但它必须检查哪些状态发生了变化。因此,最好从父级传递数据。我希望我理解你的问题是对的。如果您认为这是正确的,我将编辑我的答案。
猜你喜欢
  • 2020-10-31
  • 2020-11-06
  • 2020-08-22
  • 1970-01-01
  • 2017-04-04
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 2016-04-29
相关资源
最近更新 更多