React 基础使用

使用 React 做一个 TodoList

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>React</title>
</head>

<body>
  <div id="example"></div>
  <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
  <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
  <script src="https://cdn.bootcdn.net/ajax/libs/babel-standalone/7.0.0-beta.3/babel.min.js"></script>
  <script type="text/babel">
    class App extends React.Component {
      state = { todos: ['吃饭', '睡觉', '敲代码'] }
      addTodos = (thing) => {
        let todos = [...this.state.todos]
        todos.unshift(thing)
        this.setState({todos})
      }
      render() {
        const { todos } = this.state
        return (
          <div>
            <h1>Simple Todo</h1>
            <Add count={todos.length} addTodos={this.addTodos}/>
            <Lists todos={todos} />
          </div>
        )
      }
    }
    class Add extends React.Component {
      add = () => {
        let {addTodos} = this.props
        let content = this.todoInput.value.trim()
        addTodos(content)
        this.todoInput.value = ''
      }
      render() {
        const {count} = this.props
        return (
          <div>
            <input type="text" ref={(input) => {this.todoInput = input}}/>
            <button onClick={this.add}>Add#{count}</button>
          </div>
        )
      }
    }
    class Lists extends React.Component {
      render() {
        const {todos} = this.props
        return (
          <div> 
              <ul>
                {todos.map((item, index) => {
                  return<li key={index}>{item}</li>
                })}
              </ul>
          </div>
        )
      }
    }
    ReactDOM.render(<App />, document.getElementById('example'));
  </script>
</body>

</html>

   转载规则


《React 基础使用》 刘星星 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
iOS中Masonry的使用总结 iOS中Masonry的使用总结
MasonryMasonry是一个基于AutoLayout的开源布局框架。类似的还有PureLayout,snapKit等。基于 frame的框架有Facade以及Neon。现在我们使用最多的就是Masonry和SnapKit/Snap
2019-04-01
下一篇 
RxSwift基础总结 RxSwift基础总结
1.创建可观察对象Observable下面都是创建可观察对象的方式: enum MyError: Error { case errorA case errorB }//创建可观察对象 let _ = Observable
2019-03-01
  目录