当前位置: 首页 > 知识库问答 >
问题:

Reactjs(web)中功能组件的Redux

通煜祺
2023-03-14

我写这个问题是因为我想请你帮助我如何在我的功能组件上使用redux。我查看了其他使用React组件的示例,但我不理解如何在功能组件中获得“存储”值。

我的想法是用我的

百货商店getState()

在我的功能组件中检查状态并与UI交互,但我无法实现。

需要帮忙吗?

例如,功能组件:

import React from 'react';
import withStyles from 'isomorphic-style-loader/lib/withStyles';
import s from './Header.css';
import { Navbar, Nav } from 'react-bootstrap';
import HeaderMenu from '../HeaderMenu';
import cx from 'classnames';

function Header() {
  return (
    <Navbar fluid fixedTop id="Header" className={s.navContainer}>
      <Nav block className={cx(s.HeaderTitle, s.hideOnSmall)}>Project title</Nav>
      <HeaderMenu />
    </Navbar>
  );
}

export default withStyles(s)(Header);

如何在标题组件中使用“存储”对象?它在我的应用程序组件上工作,只是我不知道如何在我的组件中使用它。

我的问题是:

  • 我应该使用操作来检索状态吗
  • 我应该将存储对象组件传递给组件属性吗

提前谢谢!

编辑:

我正在使用https://github.com/kriasoft/react-starter-kit和redux分支一起https://github.com/kriasoft/react-starter-kit/tree/feature/redux

共有3个答案

淳于健
2023-03-14

如果您想在功能组件上获得Redux状态,您必须手动连接组件和Redux,这非常繁琐。您必须访问React组件中的reducer变量,这意味着在其他配置中将reducer导入组件文件。

这会干扰您通常会获得的其他好处,例如动作创建者、通过中间件自动调度动作等等。

一个更简洁的想法是只使用React-Redux附带的提供者组件将头部组件转换为容器。容器是一个react组件,它“侦听”对存储所做的任何更改。实际上,您将头组件包装在一个直接连接到redux存储的高阶组件中。

这种方式更具扩展性,您可以轻松地创建一个样板文件,可用于任何React/Redux项目。

西门智
2023-03-14

正如Dan Abramov在他著名的Egghead.io系列中提到的,表示组件不应该知道Redux商店,也不应该直接使用它。您应该创建一个叫做容器组件的东西,它将通过属性向您的表示组件传递必要的状态字段操作回调。

如果以上概念你不熟悉,我强烈建议你看丹·阿布拉莫夫的gghead.io系列。他所描述的模式现在有编写React Redux应用程序的实际标准风格指南。

凌清夷
2023-03-14

从第7版开始。x react redux现在有用于功能组件的挂钩。

标题。jsx

import React from 'react';
import withStyles from 'isomorphic-style-loader/lib/withStyles';
import s from './Header.css';
import { Navbar, Nav } from 'react-bootstrap';
import HeaderMenu from '../HeaderMenu';
import cx from 'classnames';
import { useSelector } from 'react-redux'

function Header() {
  const store = useSelector(store => store)
  return (
    <Navbar fluid fixedTop id="Header" className={s.navContainer}>
      <Nav block className={cx(s.HeaderTitle, s.hideOnSmall)}>Project title</Nav>
      <HeaderMenu />
    </Navbar>
  );
}

export default withStyles(s)(Header);

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import { Provider } from 'react-redux'
import store from './store'

ReactDOM.render(
    <Provider store={store}>
        <App />
    </Provider>,
    document.getElementById('root')
);
 类似资料:
  • 我目前有一个类组件和一个函数组件在我的主组件 以下是的代码段: 类组件 功能部件 因此,我想做的是通过按钮的onClick操作,从功能组件更改类组件的状态。我怎样才能完成任务?

  • 我有一个关于ReactJS和组件的问题,特别是关于函数如何在组件系统中交互。 在这个例子中: ComponentA导入pp.js,并尝试将App.functionA分配给函数B,然后在JSX中调用它。这会导致失败,基本上就是说函数没有定义。 我知道这不是功能共享的方式(我已经学习了如何通过道具等传递功能)。 我只是想知道为什么这不起作用,以帮助我更好地理解React和Javascript的机制。

  • 问题内容: 快速提问。我正在学习React JS。 创建组件时,我们在render函数中提供要渲染的组件的html模板。到目前为止,我只看到带有很少部分html的小型组件,但是我只是想知道如果我们的组件带有巨大的html模板会发生什么情况,有没有办法提供指向单独的html文件的路径?还是我们被迫直接在render函数中编写所有html?谢谢! 问题答案: 您应该始终将其编写在render函数中。您

  • 问题内容: 我有一个关于React的问题(未覆盖时)。我确实更喜欢纯功能组件,但是即使prop / state不变,我也担心它每次都会更新。所以我正在考虑使用PureComponent类。 我的问题是:功能组件是否与PureComponents 具有相同的检查?还是每次都会更新? 问题答案: 在React中,功能组件是无状态的,并且它们没有生命周期方法。 无状态组件是一种编写React组件的优雅方

  • 问题内容: 我是 React的 新手,我想清楚地知道要使用哪一种,关于组件,我看到有两种类型。 功能组件: 基于类的组件: 我读到我们应该始终尝试使用 功能性组件, 因为它在某些方面有所帮助,并且还听说我们应该尽可能避免使用基于 类的组件 。 我很困惑哪个是对的,哪个不是。 为什么要尽可能使用功能组件,这样做有什么好处? 我们何时应该选择功能组件,何时不应该,尚不清楚。 问题答案: 类组件 基于类

  • 我正在尝试在ReactJS中实现搜索功能。我不知道该怎么做。下面我给出了我尝试过的代码。 我需要在serach之后在表中显示结果。 //下面是我的功能 //下面是我的api响应