0
我在使用React 0.14.7渲染子组件时遇到问题 - 这就像React完全忽略它。React not rendering child
下面是启动渲染方法:
ReactDOM.render(
React.createElement(
view,
{
name: 'Rob'
}
),
document.getElementById('content')
);
这里所呈现的主要观点:
var React = require('react'),
LogRegBack = require('log-reg-back-view');
var RegisterView = React.createClass({
render: function() {
console.log(1);
return React.DOM.div({
children: [
'Hello, ' + this.props.name,
LogRegBack,
' How are you?'
]
})
}
});
module.exports = RegisterView;
及这里的被忽略的LogRegBack子组件:
var React = require('react'),
styles = require('../../../css/log-reg-back.css');
var LogRegBack = React.createClass({
render: function() {
console.log(2);
return React.DOM.img({
className: styles.logRegBack,
src: '/assets/log-reg-back.jpg'
});
}
});
module.exports = LogRegBack;
我正在使用webpack捆绑一切,所以我想也许我有一个配置问题,但是我可以在输出文件中看到我的LogRegBack代码,并且当我在LogRegBack文件中进行更改(我正在使用--watch
选项)时,webpack会按预期重新生成。而且,当我启动我的网页时,我看到控制台中记录了'1',但我没有看到'2'。出于某种原因,React甚至没有调用LogRegBack组件的render()
方法。
如果我直接添加图像作为我的主视图文件中的孩子时,图像显示出来就好了:
children: [
'Hello, ' + this.props.name,
React.DOM.img({
className: styles.logRegBack,
src: '/assets/log-reg-back.jpg'
}),
' How are you?'
]
我在做什么错?
您的怀疑是正确的;但是,我决定在文档中遵循[此建议](https://facebook.github.io/react/blog/2014/10/14/introducing-react-elements.html#react-without-jsx)并创建一个工厂:'LogRegBack = React.createFactory(require('log-reg-back-view'));' –
这可能是更好的方法,很高兴你找到了。 –