美文网首页
react入门(一)

react入门(一)

作者: 叶夏星辰 | 来源:发表于2017-10-24 21:04 被阅读0次

react.js是核心库,react-dom.js提供与DOM相关功能,Browser是将JSX语法转化为js语法
ReactDom.render用于将模板转为HTML语言,并插入指定DOM节点,传两个参数,(object:object,DOM:object)

JSX的语法

html直接写在js中,不加任何引号
js语法写在花括号{ }中

var names = ['Alice', 'Emily', 'Kate'];
ReactDOM.render(
  <div>
  {
    names.map(function (name) {
      return <div>Hello, {name}!</div>
    })
  }
  </div>,
  document.getElementById('example')
);

在JSX中不能使用if slse
react使用className和htmlFor代替class和for

JSX表现为对象
Babel编译JSX在React.createElement()调用的时候。
下面两个例子是相似的

const element = (
  <h1 className="greeting">
    Hello, world!
  </h1>
);
const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Hello, world!'
);

关于组件,组件类的首字母必须大写,否则会报错,组件类只能包干一个顶层标签,即最外层标签只能有一个
(JSX使用大小写的约定来区分本地组件的类和HTML标签)
向组件传递参数,可以使用this.props对象,对象的属性与组件的属性一一对应,
props属性可以用来组件之间传值。

var HelloMessage = React.createClass({
  render: function() {
    return <h1>Hello {this.props.name}</h1>;
  }
});
 
ReactDOM.render(
  <HelloMessage name="Runoob" />,
  document.getElementById('example')
);

但是有一个例外就是this.props.children,表示组件的所有子节点

this.props.children的值

如果组件没有子节点,值为undefined;一个子节点,数据类型是object;如果多个子节点,数据类型是array
react提供了React.Children来遍历子节点而不用担心this.props.children的数据类型

React State

通过与用户的交互,实现不同状态,然后渲染UI,让用户界面和数据保持一致。
只需更新组件的state,根据新的state重新渲染用户界面(不要操作DOM)

var LikeButton = React.createClass({
        getInitialState: function() {
          return {liked: false};
        },
        handleClick: function(event) {
          this.setState({liked: !this.state.liked});
        },
        render: function() {
          var text = this.state.liked ? '喜欢' : '不喜欢';
          return (
            <p onClick={this.handleClick}>
              你<b>{text}</b>我。点我切换状态。
            </p>
          );
        }
      });

      ReactDOM.render(
        <LikeButton />,
        document.getElementById('example')
      );

onClick等事件,on之后第一个字母是大写的,小写的事件将不生效

State 和 Props

state和props可以组合使用,可以在父组件中设置state,并通过在子组件上使用 props 将其传递到子组件上。在 render 函数中, 我们设置 name 和 site 来获取父组件传递过来的数据。

var WebSite = React.createClass({
  getInitialState: function() {
    return {
      name: "jjj",
      site: "http://www.baidu.com"
    };
  },
  clickfun:function (){
      this.setState({name:(this.state.name=="jjj"?"aaa":"jjj")});
      console.log(this);
  },
  render: function() {
    return (
      <div onClick={this.clickfun}>
        <p onClick={this.clickfun}>子元素,点击事件生效</p>
        <Name name={this.state.name} onClick={this.clickfun}/>
        <Link site={this.state.site} />
      </div>
    );
  }
});
 
var Name = React.createClass({
  render: function() {
    return (
      <h1>{this.props.name}</h1>
    );
  }
});
 
var Link = React.createClass({
  render: function() {
    return (
      <a href={this.props.site}>
        {this.props.site}
      </a>
    );
  }
});
 
ReactDOM.render(
  <WebSite />,
  document.getElementById('example')
);

示例中,绑定在顶层元素和子元素p上的事件生效,绑定在子组件Name上的事件不生效,应该是子组件无法获取到父组件上的clickfun函数,因为传值是使用props

相关文章

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • awesome-react-native

    React React 中文文档一定要看官方文档 React 入门实例教程阮一峰老师出品,最好的 react 入门...

  • React Native:从入门到原理

    React Native:从入门到原理 React Native:从入门到原理

  • React 实践(一)

    参考:《React 入门实例教程--阮一峰》、《React 学习教程--众成翻译》。React 框架入门学习摘录。...

  • React Native学习资料

    React 入门实例教程React-Native入门指南Flex 布局教程:语法篇React Native探索(二...

  • React Native

    JavaScript 标准参考教程(alpha)ECMAScript 6入门 React 入门实例教程React ...

  • 慕课视频

    免费 《Web安全-XSS》《ReactNative基础与入门》《React入门》《在React中使用Redux数...

  • React入门-001

    +++Categories = ["React",]Tags = ["React","入门",]date = "2...

网友评论

      本文标题:react入门(一)

      本文链接:https://www.haomeiwen.com/subject/kynxpxtx.html