反应componentDidMount不触发

凯乐 · 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;
回答(7)
时间
逆天路易
7 · 2020-04-03 11:39:31

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

老丝
6 · 2020-04-03 11:39:30

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

将其更改为componentDidMount并有效

老丝
5 · 2020-04-03 11:39:30

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

A
A小哥
4 · 2020-04-03 11:39:30

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

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

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

阿飞
3 · 2020-04-03 11:39:30

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

村村
2 · 2020-04-03 11:39:30

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

module.exports = RecipePage;
神奇
1 · 2020-04-03 11:39:30

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

你的回答

加载中...
⌘+Return 发表
发表

温馨提示:登录后可发表评论或回复

关闭,朕知道了

扫码关注微信公众号或小程序