react

<!DOCTYPE html>
<html>
<head>
<title>Hello world</title>
<script src="..../.react.js"></script>
<script src=".../.JSXTransformer.js"></script>
</head>
<body>
<script type="text/jsx">
var HelloWorld=React.createClass({ render:function(){ return <p>Hello wold!</p> } }),
React.render(<helloWorld></HelloWorld>,document.body);

</script>
</body>
</html>

首先注意。1).我们创建的组件名首字母要大写,主要是为了和html原来有的组件 区分开来,因为html中的标签都是小写开头的。

2).React.render(<helloWorld></HelloWorld>,document.body);后面的doucment.body的意思是将这个标签添加到document.body中去。

 

(2).JSX的语法

先看下面的一个例子

var HelloMessage=React.createClass({

        render function(){
         return <div className="test">hello {this.props.name}</div>

         }
})

React.render(<HelloMessage name="john"></HelloMessage>,document.body);

首先自定义的标签名首字母要大写,其次我们可以通过{this.props.name}来获取标签属性值,此处值为john。注意一定要用{}包裹起来才可以。{}里面是javascript的一个求值表达式。但是不能是语句。例如if语句,switch语句等不能。我们还可以放一个函数的调用。函数名一般是驼峰命名。此外在这里对于class和for属性要写成className和htmlFor来代替。

 

(3).注释

单行注释://

多行注释:/*.....*/

对于react注释有两种,一,子节点注释:要用大括号包裹起来

render function(){
         return <div className="test">hello{
//adjadahj;
/*ajkdalk
jsdflfja*/
} {this.props.name}</div> }
属性节点注释:
    render function(){
         return <div /*asfdaf*/className="test" //afagsagfsa;>hello {this.props.name}</div>

         }

css属性添加
<script type="text/jsx">
var style={
    color:red;
    font-size:16px;
  }

var HelloWorld=React.createClass({
    
      render:function(){

          return <p>Hello wold!</p>

      }
  

}),
React.render(<div style={style}><helloWorld></HelloWorld></div>,document.body);

</script>

首先,我们创建一个css对象,其次我们创建的对象是不能直接在自定义组件上设置的,所以我们一般在自定义组件外面包裹一个div,然后将css一个对象属性添加到div上面,但是我们要注意,我们给div的style添加的是一个css对象属性,所以有{}。

 

(4).{}表达式的书写方式。

var HelloMessage=React.createClass({

        render function(){
         return <div className="test">hello {this.props.name}</div>

         }
})

React.render(<HelloMessage name="john"></HelloMessage>,document.body);

如果我们需要实现这样的功能,如果有name属性的话,就输出hell this.props.name;如果没有的话,就输出hello world

{if(this.props.name){

    return this.props.name;

} else{

return "world";

  }

}这种方式会出错,因为{}这里面是一个语句而不是一个表达式。

正确的方法有

1:三元表达式:{this.props.name ? this.props.name:"world";}

2:变量

var HelloMessage=React.createClass({
           getName:function(){
if(this.props.name){
return this.props.name;
}else{
return "world";
              }

} render:
function(){
var name=getName();
return <div className="test">hello, {name}</div> } }) React.render(<HelloMessage name="john"></HelloMessage>,document.body);


方法三:函数
var HelloMessage=React.createClass({
           getName:function(){
             if(this.props.name){
               return this.props.name;
            }else{
               return "world";
              }

           }
        render: function(){
    return <div className="test">hello, {getName()}
</div>
}
}
)
React.render(<HelloMessage name="john"></HelloMessage>,document.body);

 

最后一种方法:逻辑方法

{this.props.name||"world"}

这句话的意思就是如果this.props.name为真的话就返回this.props.name.如果为假的话就返回"world";

 
 
posted @ 2016-03-10 21:46  秋天的故事  阅读(284)  评论(0编辑  收藏  举报