React.js专题站

reactjs+webpack中的父子组件分离

2016-07-22  本文已影响141人  stois

首先要吐槽的是国内的文档真心坑啊。最近一年之外的都不能轻信了。
学习reactjs的过程中借鉴了这篇翻译,十分受用。
搭建webpack+reactjs则参考了这篇
然后遇到了一个问题是:我想把父子组建分开写,而不是像官方文档一样写在一起。但是官方文档并没告诉我怎么分离....
写组件的引入时,官方使用了require(...)样式的语法,但试图拆分父子组件时却百般出错。我有同事使用了es6语法的import来写,但脾气暴躁的我还是喜欢写require。经过很过坑之后,发现国外大神日志,于是学习之。
儿子1: bio.jsx

/** @jsx React.DOM */
var React = require('react');
module.exports = React.createClass({ 
  render: function() {
 return ( <div className="Bio"> 
              <p className="Bio-text">{this.props.text}</p>
           </div>
 ) }
});

儿子2 : avatar.jsx

/** @jsx React.DOM */
var React = require('react');
module.exports = React.createClass({ 
render: function() { 
return ( <div className="Avatar"> 
<img className="Avatar-img" src={this.props.imgSrc} alt="" /> 
</div> ) }
});

父亲:

/** @jsx React.DOM */
var React = require('react');
var Avatar = require('./Avatar.jsx');
var Bio = require('./Bio.jsx');
module.exports = React.createClass({ 
render: function() { return ( 
  <div className="Profile"> 
    <h2 className="Profile-title">{this.props.username}                
    </h2> 
    <div className="Profile-body"> 
      <Avatar imgSrc={this.props.avatar} />
       <Bio text={this.props.bio} /> 
    </div> 
  </div> ) }
});

入口文件:

/** @jsx React.DOM */
var React = require('react');
var ReactDOM = require('react-dom')
var Profile =require('./Profile.jsx');
ReactDOM.render( 
<Profile username="Simon" bio="My name is Simon. I make websites" avatar="http://simonsmith.io/assets/images/me.jpg" />, document.body);

入口文件与之前博客里的入口写的不同,是因为现在都用react-dom来做dom的渲染了。

上一篇下一篇

猜你喜欢

热点阅读