react-34-组件封装案例

简介: 在脚手架里面做个组件封装的练习,这个也是下篇文章 触底加载思路的组件基础

1. 前言


在脚手架里面做个组件封装的练习,

这个也是下篇文章 触底加载思路的组件基础


2. 需求


2.1 效果预览

4MPIF`8TV1OB3}RMVYM2V]6.png


2.2 分析

简单的Item组件 就是li

List组件 就是 ul

然后是界面组件 index.js


3. Item


这个需要对照着接口文档,来解构这些字段

这里边 左右包含起来 ,是因为我 用了flex布局,比较方便


import React, { Component } from 'react'
export default class Item extends Component {
    constructor(props) {
        super()
        this.state = {
            baseImgUrl: "http://yzs.can.com/img/"
        }
    }
    render() {
        let { image_path, name, recent_order_num, float_minimum_order_amount, piecewise_agent_fee, distance, order_lead_time } = this.props.item
        return (
                <li>
                    <div className="search-left">
                        <img src={this.state.baseImgUrl + image_path} alt={name}/>
                    </div>
                    <div className="search-right">
                        <p className="title"><strong>品牌</strong> {name}</p>
                        <p>月售{recent_order_num} 单</p>
                        <p>
                            ¥{float_minimum_order_amount}起送/{
                                piecewise_agent_fee.tips
                            }
                            <span>{distance}/ </span>
                            <i>{order_lead_time}</i>
                        </p>
                    </div>
                </li>
        )
    }
}



4. List


这里边既然用了this.props.list,也就是 父组件传值的时候属性也就确定了


import React, { Component } from 'react'
import Item from './Item'
export default class List extends Component {
    render() {
        return (
            <div>
                <ul className="list">
                    {
                        this.props.list.map(item=>{
                            return(
                                <Item  item={item} key={item.id}/>
                            )
                        })
                    }
                </ul>
            </div>
        )
    }
}



5. index.js


使用了 移动端的 框架

axios没有做过多的封装,也没挂原型上

5.1 布局


import React, { Component } from 'react'
import List from './List';
import axios from 'axios';
import { NavBar } from "antd-mobile"
export default class TakeOutComponent extends Component {
    constructor() {
        super()
        this.state = {
            list: [],
            pageNum: 0,
            pageSize: 6
        }
    }
    render() {
        return (
            <div>
                <NavBar> 懂得都懂 </NavBar>
                <List list={this.state.list} />
          </div>
        )
    }
}


5.2  axios


componentDidMount() {
        this.getData()       
    }
    //**********************************  自定义函数
    getData() {
        const shopsUrl = "/shopping/restaurants"
        let params = {
            latitude: 31.22967,
            longitude: 121.4762,
            offset:this.state.pageSize*this.state.pageNum
            limit: this.state.pageSize
        }
        axios.get(shopsUrl, { params }).then(res => {
            // console.log("商铺列表数据",res)
            this.setState({
                list: res.data,
                pageNum: this.state.pageNum + 1
            })
        }).catch(err => {
            console.log("商铺列表失败:", err)
        })
    }


6. 后记


其实写熟练了 还是觉得 react更加飘逸,随心所欲




相关文章
|
4月前
|
存储 前端开发 JavaScript
最适合新手学习的react案例-Todolist尊享版!
【8月更文挑战第13天】最适合新手学习的react案例-Todolist尊享版!
61 2
最适合新手学习的react案例-Todolist尊享版!
|
3月前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
61 10
React技术栈-react使用的Ajax请求库实战案例
|
3月前
|
前端开发
React技术栈-react使用的Ajax请求库用户搜索案例
这篇文章展示了一个React技术栈中使用Ajax请求库(如axios)进行用户搜索的实战案例,包括React组件的结构、状态管理以及如何通过Ajax请求获取并展示GitHub用户数据。
36 7
React技术栈-react使用的Ajax请求库用户搜索案例
|
3月前
|
前端开发 NoSQL MongoDB
React技术栈-基于react脚手架编写评论管理案例
这篇文章介绍了在MongoDB中使用sort和投影来对查询结果进行排序和限制返回的字段,通过具体的命令示例展示了如何实现这些操作。
54 6
React技术栈-基于react脚手架编写评论管理案例
|
3月前
|
前端开发 JavaScript
React技术栈-react的脚手架创建应用案例
本文介绍了如何使用React的官方脚手架工具create-react-app快速创建React项目,并展示了项目的目录结构和基本的代码文件,以及如何启动和运行React应用。
36 2
|
7月前
|
前端开发 JavaScript 容器
第二章 简单实现Hello React案例
第二章 简单实现Hello React案例
|
JavaScript 前端开发 开发工具
TypeScript 可以与其他流行的开发工具和框架结合使用,如 Angular 和 React 等。具体应用案例解析
TypeScript 可以与其他流行的开发工具和框架结合使用,如 Angular 和 React 等。具体应用案例解析
71 1
|
设计模式 前端开发 安全
React组件封装实践:如何拆解复杂的页面
在日常开发中,遇到非常难以维护的页面是常态,相信不少同学也为此苦恼过,笔者在业务开发中总结了些经验希望对大家有所启发。
10154 0
React组件封装实践:如何拆解复杂的页面
|
前端开发
前端学习案例5-react中的生命周期
前端学习案例5-react中的生命周期
75 0
前端学习案例5-react中的生命周期