蓝色幻想728

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

React的学习之旅1

  • 单标签要有斜杠代表结束
  • 用React.createClass()方法时,赋值后的组件名称首字母一定要大写
  • 一定要先定义组件,再用ReactDOM.render调用
  • 组件里render对应的函数的返回值,如果有多个html标签,外面一定要再多包一层,外面可以用小括号包起来
var FirstComponent = React.createClass({ //FirstComponent首字母大写
    render:function(){
        return <img src="./image/1.png"/>
    }
});
//定义组件(组件名首字母必须大写)
//React对象调用createClass方法,把一个对象传进去,对象有个键是render,对应是个函数,有个返回值
var FirstComponent = React.createClass({
    render:function(){
        return <img src="./image/1.png"/>
    }
});

//这里将封装好的FirstComponent,用ReactDOM的render方法添加到指定的DOM中
ReactDOM.render(
    <FirstComponent />,
    document.getElementById('wrap')
);
ReactDOM.render(
    <FirstComponent />,
    document.getElementById('div1')
);
var FirstComponent = React.createClass({
    render:function(){
        return ( //这里有2个标签,外面必须再包一层,另外可以用小括号包一下
            <div>
                <img src="./image/1.png"/>
                <h2>欢迎学习React</h2>
            </div>
        )
    }
});
  • 利用creatClass定义的属性,可以在html中传入不同的值,然后用{this.props[属性名]}的方式来定义这个值是可以在外面定义的,然后在后面的ReactDOM.render方法中调用时,在每个对应的html标签中传入。方法有两种,一种是直接赋值,一种是把所有属性名和属性值放进一个对象中。
  • {...[对象名称]}比如{...obj}是一种语法糖,意思将obj中的键值对全部按照标签的属性名和属性值的方式添加到html标签中
  • 要注意的是,在createClass时,里面标签对应的值用了{}表示,这个在标签中用{}的做法,babel会自动解析成js代码
var FirstComponent = React.createClass({
    render:function(){
        return (
            <div>
                <h2>{this.props.title}</h2>
                <input type="text" />
                <input type="button" value={this.props.btnValue}/> //注意这里的要用到this.props.btnValue,btnValue要对应好传入对象中的键,而this.props相当于谁调用渲染了这个组件,就传入该标签中属性的属性对象(属性键值对)
            </div>
        )
    }
});

var obj = {
    title: 'Welcome to study React!!!',
    btnValue: 'Confirm!'
};
var obj2 = {
    title: '欢迎学习react!!!',
    btnValue: '确认!'
};


ReactDOM.render(
    //<FirstComponent title={obj.title} btnValue = {obj.confirm} />,
    <FirstComponent {...obj} />,//这里用了语法糖,把obj中的键值对title和btnValue以及它们对应的值赋给FirstComponent标签中
    document.getElementById('wrap')
);
ReactDOM.render(
    <FirstComponent {...obj2}/>,//第二个组件标签渲染时用的是obj2中的属性名和属性值
    document.getElementById('div1')
);
  • 如果要直接给组件中的html标签添加class,不能直接在标签里写class,而应该要用className,因为这里是会被解析成js代码
var Hello = React.createClass({  //这里是className,而不是class
    render:function (){
        return (<h2 className="active">Hello {this.props.title}.{this.props.name}</h2>)
    }
});
  • 如果要在组件里的html标签中直接写入行间样式,不能使用字符串的形式,而是可以用json的形式,但是如果不用json存成变量,那就要写{{}}的形式,外面一层{}相当于解析js代码,里面一层才是json的那个大括号
  • 行间样式如果涉及到复合样式,也要用驼峰的方式,而不是css里用-连接了,时刻记住这里是js解析,另外属性值仍然要用''包起来
var Hello = React.createClass({
    render:function (){ //这里fontSize,而不是font-size,用了2个大括号宝珠
        return (<h2 style={{color:'deeppink',fontSize:'30px'}}>Hello{this.props.name}</h2>) 
    }
});
posted on 2016-08-18 07:00  蓝色幻想728  阅读(170)  评论(0编辑  收藏  举报