反应componentDidMount不触发

JavaScript React.js

凯乐

2020-04-03

我建立了一个新的react项目,由于某种原因,该componentDidMount方法没有被调用。

我已经通过调用console.login 来验证了此行为componentDidMount但是在控制台中看不到它的输出。

此外,this.setState()无法正常工作。

我很困惑为什么componentDidMount不被调用。我尝试同时使用React“ v0.14.0”和“ v0.14.3”。

为什么不调用“ componentDidMount”?

码:

var React = require('react');

var RecipePage = React.createClass({
  componentDidMount: function() {
    console.log('mounted!');
  },
  render: function() {
    return (
      <div>Random Page</div>
    );
  }
});

module.exports = RecipePage;

第3974篇《反应componentDidMount不触发》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

7个回答
逆天路易 2020.04.03

对我而言,在该componentDidMount开始按预期启动后,我还在类中声明了componentDidUpdate

老丝 2020.04.03

对我来说,原因是ComponentDidMount中的大写字母“ C”

将其更改为componentDidMount并有效

老丝 2020.04.03

当我componentWillMount()在同一个类中定义2x 时,这发生在我身上这不会产生运行时错误。我只是删除了第二个定义,事情就开始起作用了。

A小哥 2020.04.03

所以...瞧瞧......我终于开始工作了(在后端专家的帮助下)。之所以未触发“ componentDidMount”方法,是因为我的服务器正在捆绑并在服务器端提供所有的react + html服务(只有调用“ render”和“ getInitialState”方法才能创建“ html”模板,该模板通过客户端的浏览器传递...但是它停在那里,因为它认为已经完成了)

解决方法:找到一种通过服务器交付生成的“已编译” html的方法,此外,还可以在客户端再次访问和“启动” react自己的事件当编译我的“ view”文件(index.js或index.html)时,我包含了一个“ Application.start()”脚本,该脚本将我的bundle.js代码再次注入模板中。然后在我的gulpfile中,导出“ Application”变量,以便“ view”文件可以访问它。

Gahh ...为此拉了我的头发。是时候阅读服务器端和客户端渲染了

阿飞 2020.04.03

就我而言,我export default在导入的文件中导入了没有命令的组件当我解决此问题后,componentDidMount开始射击...

村村 2020.04.03

您需要更改module.exports以指向RecipePage而不是TestPage

module.exports = RecipePage;
Stafan路易 2020.04.03

就我而言,componentDidMount代码中还有另一个

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android