IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 【React案例】添加列表清单案例 -> 正文阅读

[JavaScript知识库]【React案例】添加列表清单案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <div id="app"></div>
    <div id="app2"></div>

    <script  src="../js/react.development.js"></script>
    <script  src="../js/react-dom.development.js"></script>
    <script src="../js/prop-types.js"></script>
    <script src= "../js/babel.min.js"></script>

    <!-- //告诉babeljs解析jsx代码 -->
    <script type="text/babel">
    
        /*
        问题:
            数据保存在哪个组件中:
                看数据是某个组件需要,还是某些组件需要(给共同的父组件)
            需要在子组件中改变父组件的状态:
                子组件中不能直接改变父组件中的状态
                状态在哪个组件内就在哪个组件中更新状态
            解决:
                父组件定义函数,传递给子组件,子组件调用

        编写的流程:
            1、拆分组件
            2、实现静态组件(只有静态界面,没有动态数据,也没有交互)
            3、实现动态交互
                3.1实现初始化数据动态显示
                3.2实现交互功能
        */


        class App extends React.Component {

            constructor(props){
                super(props)

                // 1、初始化状态
                this.state = {
                    todos: ['吃饭','睡觉' ,'打豆豆']
                }
                this.addTodo = this.addTodo.bind(this)

            }

            addTodo(todo){
                const {todos} = this.state
                todos.unshift(todo)
                // 更新状态
                this.setState({todos})
            }

            render(){
                const {todos} = this.state
                return (
                    // 2、读取状态的值
                    <div>
                        <h1>Simple TODO List</h1>
                        <Add  count={todos.length} addTodo={this.addTodo}/>
                        <List todos={todos}/>
                    </div>
                )
            }
        }

        class Add extends React.Component {
            constructor(props){
                super(props)

                this.add = this.add.bind(this)
            }
            add(){
                // 1、读取输入的数据
                const todo = this.todoinput.value.trim()
                // 2、检查合法性
                if(!todo){
                    return 
                }
                // 3、添加
                this.props.addTodo(todo)
                // 4、清空
                this.todoinput.value = ''
            }
            render(){
                return (
                    <div>
                        <input type="text" ref={input => this.todoinput=input}/>
                        <button onClick={this.add}>add #{this.props.count+1}</button>
                    </div>
                )
            }
        }
        
        Add.propTypes = {
            count: PropTypes.number.isRequired,
            addTodo: PropTypes.func.isRequired
        }

        class List extends React.Component {
            render() {
                return (
                    // 4、修改状态值
                    <div>
                        <ul>
                            {this.props.todos.map((todo,index)=><li key={index}>{todo}</li>)}
                        </ul>
                    </div>
                )
            }
            
        }
        // 3、限制状态值
        List.propTypes = {
            todos:PropTypes.array.isRequired
        }

        ReactDOM.render(<App/>  ,document.getElementById('app'))
    
    </script> 


</body>
</html>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-13 09:11:00  更:2021-09-13 09:12:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 20:28:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码