zoukankan      html  css  js  c++  java
  • Redux 快速入门 & 创建项目

    快速入门Redux

    官方:可预测的 JavaScript 应用程序容器

    vue框架和 react 框架里面提供了非常好的工具:vuex 和 redux。这两个工具作用很相似,简单来说就是,统一管理和维护组件中可变的数据或者状态

    • 为什么使用redux ? 什么时候使用redux ?

    因为 react 在某些问题上处理得不好,比如两个组件的通信,需要提升 state,通过父级再进行分发。

    组件通信:A组件传值给B组件。某个状态需要在任何地方(组件)都可以拿到:token 授权。用 redux。

    • redux工作模式

    触发用户操作(例如:注册按钮)> action(派发操作) > store(上一个状态,action) > reducer(新状态) > store(当前状态) > 用户操作(变化)

    搭建react项目

    • 装react脚手架:npm i -g create-react-app
    • 创建项目:create-react-app 项目名字
    • 跳转到项目文件夹:cd 项目名字
    • 启动项目:npm start

    代码部分

    1、在src里面新建文件夹和文件:components => Posts.js

    2、自动生成有状态的组件:rcc + tab键。如下:

    import React, {Component} from 'react';
    
    class Posts extends Component {
        render() {
            return (
                <div>
                    <h1>Posts</h1>
                </div>
            );
        }
    }
    
    export default Posts;
    

    3、来到App.js,引入Posts组件

    //引入:
    import Posts from "./components/Posts";
    //div标签里使用Posts:
    <div>
        <Posts /> {/*使用 */}
    </div>
    
    • 组件正常运行:

    4、关于数据

    4.1、参考 jsonplaceholder拿到posts数据

    import React, {Component} from 'react';
    
    class Posts extends Component {
        //请求数据
        componentDidMount() {
            fetch("http://jsonplaceholder.typicode.com/posts")
                .then(res => res.json()) //json解析
                .then(data => console.log(data))  //打印日志
        }
    
        render() {
            ······
        }
    }
    
    export default Posts;
    

    这100条数据和posts里面的数据是一样的,也就是说我们把数据请求下来了:

    4.2、还需要把数据存储给状态

    • 新建构造函数:construtor
    • 请求数据的时候不再打印日志,而是直接更改当前状态
    • 在return之前遍历数据
    import React, {Component} from 'react';
    
    class Posts extends Component {
        //建一个构造函数
        constructor(props){
            super(props);
            this.state = {
                posts:[]  //有100条数据的,想要在render中展示
            } //定义状态
        }
        //请求数据
        componentDidMount() {
            fetch("http://jsonplaceholder.typicode.com/posts")
                .then(res => res.json()) //json解析
                // .then(data => console.log(data))  //打印日志
                .then(data => this.setState({posts:data})) //更改当前状态
        }
    
        render() {
            //遍历数据并展示
            const postItems = this.state.posts.map(post => (
                <div key={post.id}>
                    <h3>{post.title}</h3>
                    <p>{post.body}</p>
                </div>
            ))
            return (
                <div>
                    <h1>Posts</h1>
                    {postItems}
                </div>
            );
        }  //展示100条数据
    }
    
    export default Posts;
    
  • 相关阅读:
    《飞得更高孙正义传》成为亚洲首富肯定有原因
    AutoController通用自动增删查改
    Silverlight学习笔记第一季(3)扯扯ComboBox
    Silverlight学习笔记第一季(1)DataGrid
    菜鸟混社区之如何看待社区的口水战?
    局部化页面和效率CMS实践系列总结
    图片猜成语(思维@娱乐)
    接口+泛型强大的Repository
    Silverlight学习笔记第一季(2)Listbox横向绑定数据
    poj 2954 Triangle (pick 定理 的应用 )
  • 原文地址:https://www.cnblogs.com/hefeifei/p/11855577.html
Copyright © 2011-2022 走看看