reactjs - Redux 默默地不渲染 connect()ed 组件

标签 reactjs redux

我正在使用 Redux 编写一个应用程序,但根本无法让 Redux connect()ed 组件进行渲染。

import { createStore } from 'redux';
import { Provider, connect } from 'react-redux';

var store = createStore((s, a) => s, {hello: "WORLD"});

class App extends React.Component {
  render() { return <h1> Hello, world! </h1>; }
}
var connectedApp = connect(function(s) { debugger })(App);

$(document).ready(function() {
  var target = document.getElementById("root");

  // DOES render
  React.render(<App/>, target);

  // Never renders
  React.render(<connectedApp/>, target);
});

该应用程序正在使用 babel、babelify、redux 和 redux-react。

在 connect() 内部返回一个对象似乎也没有修改组件中的 this.props 。传递给 connectdebugger 语句永远不会触发。

这段代码有问题吗?为什么组件不渲染?为什么debugger语句永远不会触发?

最佳答案

JSX 将以大写字母开头的组件类型转换为对该类型的 React.createElement 调用:

<App/> // => React.createElement(App);

但是,它将以小写字母开头的组件类型转换为 DOM 节点(通过将其作为字符串而不是引用传递):

<connectedApp/> // => React.createElement("connectedApp");

事实上,如果您通过浏览器的检查器查看 DOM,您可能会看到

<connectedApp data-reactid=".0"></connectedApp>

尝试大写connectedApp:

var ConnectedApp = connect(...)(App);

// ...

React.render(<ConnectedApp/>, target);

关于reactjs - Redux 默默地不渲染 connect()ed 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32746036/

相关文章:

javascript - Redux 表单操作未定义

javascript - 编写一个与 redux/redux-saga 共享数据的 HoC

redux - 构建状态管理存储(ngrx/redux)。平面代表数据,还是嵌套代 TableView ?

javascript - ReduxForm - enableReinitialize 不更新嵌套 FieldArrays 中的值

javascript - 如何将FormData转换为对象?

javascript - 如何在不点击 react 元素的情况下检测时间

javascript - react 路由器组件 Prop 不接受 <Link/> 组件?

reactjs - 警告 : Failed prop type: The prop `store` is marked as required in `Provider` , 但其值为 `undefined` 。在提供者中

reactjs - React redux api 每 x 秒轮询一次

javascript - 使用 reactstrap 输入模块的 React ref 没有 Value Prop