React - 功能介绍、安装配置说明(附几个简单的入门样例)

2017-09-11  本文已影响0人  前端小华子

一、React介绍

1.React的起源与发展
2 .React的特点
3,网站地址

二、准备工作

在使用 ReactJS 进行开发前,我们需要准备好这三个 js 文件:react.js、react-dom.js、browser.js。下面分别对它们进行介绍。
1. react.js 和 react-dom.js
前者是 React 主要核心,后者负责 React DOM 操作。可以访问下面地址下载最新版本:
https://github.com/facebook/react/releases
2. browser.js
实现浏览器端对 JSX 的编译。(在 react 0.14 前,使用 jsxtransformer.js,后改为 browser.js)
由于 browser.js 非常大,我们开发测试可以引用如下地址:
https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js
这种运行时解析转换 JSX 建议只在开发测试时使用。生产环境下可以借助编译工具(babel)事先将 JSX 编译成 JS。这样代码经过预编译、压缩和合并后,会提高网络的加载速度,减少流量带宽的浪费,优化用户体验。

三、使用样例

1. 简单组件和数据传递
我们可以使用 this.props 来做简单的数据传递。
(1)样例说明
定义了一个组件 HelloMessage。通过传入的 name 属性,用于 h1 标签渲染。
使用 ReactDOM.render 方法将组件渲染到 id 为 example 的 div 内。

<html>
<head lang="en">   
<meta charset="UTF-8">   
<title>简书</title>
<script src="https://cdn.bootcss.com/react/15.6.1/react.js"></script>
<script src="https://cdn.bootcss.com/react/15.6.0/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js"></script>
</head>
<body>   
<div id="example">
   
</div>
<script type="text/babel">
    var HelloMessage = React.createClass({
        render: function() {
                return<h1>欢迎访问 {this.props.name}</h1>;
           }  
});
    ReactDOM.render(
          <HelloMessage name="jianshu.com" />,
          document.getElementById('example'));

  </script>

</body>

</html>

(2)运行效果


QQ截图20170911174928.png

(3)使用 Chrome 调试工具可以看到渲染后内文档内容如下。

QQ截图20170911175115.png

2. 通过this.state更新视图
(1)样例说明

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>简书</title>
    <script src="https://cdn.bootcss.com/react/15.6.1/react.js"></script>
    <script src="https://cdn.bootcss.com/react/15.6.0/react-dom.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js"></script>
</head>
<body>
  <div id="example"></div>
  <script type="text/babel">
      var Timer = React.createClass({
          /*初始状态*/
          getInitialState: function() {
              return {secondsElapsed: 0};
          },
          tick: function() {
              this.setState({secondsElapsed: this.state.secondsElapsed + 1});
          },
          /*组件完成加载*/
          componentDidMount: function() {
              this.interval = setInterval(this.tick, 1000);
          },
          /*组件将被卸载*/
          componentWillUnmount: function() {
              clearInterval(this.interval);
          },
          render: function() {
              return (
                      <div>现在已经过去了: {this.state.secondsElapsed}秒</div>
              );
          }
      });
      ReactDOM.render(<Timer />, document.getElementById('example'));
  </script>
</body>
</html>

(2)运行效果。每隔一秒钟,secondsElapsed 就会加 1。同时页面也会自动刷新。

QQ截图20170911175645.png
3,稍微复杂一点样例
(1)样例说明
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>简书</title>
    <script src="https://cdn.bootcss.com/react/15.6.1/react.js"></script>
   <script src="https://cdn.bootcss.com/react/15.6.0/react-dom.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js"></script>
</head>
<body>
  <div id="example"></div>
  <script type="text/babel">
    var ShowEditor = React.createClass({
        getInitialState: function() {
            return {value: '在这里输入文字'};
        },
        handleChange: function() {
            this.setState({value: ReactDOM.findDOMNode(this.refs.textarea).value});
        },
        render: function() {
            return (
                <div>
                    <h3>输入:</h3>
                    <textarea style={{width:300, height:150, outline:'none'}}
                        onChange={this.handleChange}
                        ref="textarea"
                        defaultValue={this.state.value} />
                    <h3>输出:</h3>
                    <div>
                        {this.state.value}
                    </div>
                </div>
            );
        }
    });
    ReactDOM.render(<ShowEditor />, document.getElementById('example'));
  </script>
</body>
</html>

(2)运行效果。在上方的 textarea 中输入内容后,下方的 div 中会同步显示出输入的内容文字。

QQ截图20170911180104.png
上一篇下一篇

猜你喜欢

热点阅读