React 入门:实战案例 Github搜索_静态组件

news2025/1/12 18:59:27

文章目录

  • 开发前的准备
  • 实现组件静态代码

开发前的准备

  • 目标实现页面效果, 及组件拆分,如下图所示
    在这里插入图片描述

  • 组件代码结构规划
    在这里插入图片描述

  • 外部资源准备

    • 引入第三方样式 bootstrap CSS 样式库
      bootstrap 官网有 v3、v4、v5 三个版本,本文使用的 v3 版本的样式,可行去到 bootstrap 官网 https://www.bootcss.com/ 下载。
      也可以直接到我的百度网盘直接下载。

    • 案例中用到动态头像,引入了一个第三方在线生成头像的 免费 API,如需要请访问:http://api.btstu.cn/doc/sjtx.php

实现组件静态代码

  • 把 bootstap 样式作为全局样式引入,具体实现方式就是把 bootstrap 样式文件放到 public 目录中的 css 目录下,然后在 index.html 中通过 link 标签引入即可。

    // file: public/index.html
    
    <head>
      <meta charset="UTF-8" />
      <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
      <!-- 引入 bootstrap 样式 -->
      <link rel="stylesheet" href="./css/bootstrap.min.css" />
      <title>hello, react 脚手架</title>
    </head>
    

    做完这一步,在本应用中所有组件中,如果我们没有为其单独设置样式,那他都会使用 bootstrap 样式。

  • Search 组件
    Search 组件的核心就是一个搜索表单。给用户提供搜索关键词的输入接口。

    // file: src/components/Search/index.jsx
    
    import React, { Component } from "react";
    
    export default class Search extends Component {
      render() {
        return (
          <section className="jumbotron">
            <h3 className="jumbotron-heading">搜索 Github 用户</h3>
            <div>
              <input type="text" placeholder="输入关键词点击搜索" />
              &nbsp;
              <button>搜索</button>
            </div>
          </section>
        );
      }
    }
    
  • List 组件
    List 组件是一个用户列表,用来展示搜索结果。

    // file: src/components/List/index.jsx
    
    import React, { Component } from "react";
    import "./index.css";
    
    export default class List extends Component {
      render() {
        return (
          <div className="row">
            <div className="card">
              <a href="https://www.51blog.xyz" target="_blank" rel="noreferrer">
                <img
                  src="http://api.btstu.cn/sjtx/api.php?lx=a1&format=images"
                  style={{ width: "100px" }}
                  alt="avatar"
                />
              </a>
              <p className="card-text">reactjs</p>
            </div>
            <div className="card">
              <a href="https://www.51blog.xyz" target="_blank" rel="noreferrer">
                <img
                  src="http://api.btstu.cn/sjtx/api.php?lx=b1&format=images"
                  style={{ width: "100px" }}
                  alt=""
                />
              </a>
              <p className="card-text">reactjs</p>
            </div>
            <div className="card">
              <a href="https://www.51blog.xyz" target="_blank" rel="noreferrer">
                <img
                  src="http://api.btstu.cn/sjtx/api.php?lx=c1&format=images"
                  style={{ width: "100px" }}
                  alt=""
                />
              </a>
              <p className="card-text">reactjs</p>
            </div>
            <div className="card">
              <a href="https://www.51blog.xyz" target="_blank" rel="noreferrer">
                <img
                  src="http://api.btstu.cn/sjtx/api.php?lx=c2&format=images"
                  style={{ width: "100px" }}
                  alt=""
                />
              </a>
              <p className="card-text">reactjs</p>
            </div>
            <div className="card">
              <a href="https://www.51blog.xyz" target="_blank" rel="noreferrer">
                <img
                  src="http://api.btstu.cn/sjtx/api.php?lx=c3&format=images"
                  style={{ width: "100px" }}
                  alt=""
                />
              </a>
              <p className="card-text">reactjs</p>
            </div>
          </div>
        );
      }
    }
    

    注意事项

    • <a> 标签用到了 target="_bank"属性,就必须增加一个属性 rel="noreferrer";
    • <img> 标签必须要有 alt属性;
    • 注意 classNamestyle 的书写形式。

    List 组件样式:

    // file: src/components/List/index.css
    
    .album {
      min-height: 50rem;
      padding-top: 3rem;
      padding-bottom: 3rem;
      background-color: #f7f7f7;
    }
    
    .card {
      float: left;
      width: 33.333%;
      padding: 0.75rem;
      margin-bottom: 2rem;
      border: 1px solid #efefef;
      text-align: center;
    }
    
    .card > img {
      margin-bottom: 0.75rem;
      border-radius: 100px;
    }
    
    .card-text {
      font-size: 85%;
    }
    
  • App 组件
    整合调用 Search 和 List 组件。

    // file: src/App.js
    import React, { Component } from "react";
    import Search from "./components/Search";
    import List from "./components/List";
    
    export default class App extends Component {
      render() {
        return (
          <div className="container">
            <Search />
            <List />
          </div>
        );
      }
    }
    

至此,我们就完成了 github 用户搜索案例的组件静态化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript篇.day05-数组, 基本/引用数据类型函数调用区别

目录 1.Array数组 (1)简介 (2)数组的基本操作 (3)数组的遍历 a. 普通数组的遍历 b.对象数组的遍历 (4)数组对象常用方法 2.基本/引用数据类型函数调用区别 1.Array数组 (1)简介 数组时存放一组数据,长度可变的有序集合索引: 从0开始, 空数组索引无效稀疏数组, 其中含…

一文搞懂中台与产品微服务、SaaS的区别

出处&#xff1a;本文摘录自《中台产品经理》一书 谈到“中台”&#xff0c;我们不得不说的另外两个概念就是“微服务”与“SaaS”&#xff0c;有很多人会把“中台”与这两个概念画上等号。但实际上&#xff0c;中台 ≠产品微服务 ≠ SaaS。这两个概念看似与中台很相似&#xf…

因斯布鲁克大学发明一种更快的新型量子计算机

奇偶校验计算机可以在单个量子比特上执行两个或多个量子比特之间的操作&#xff0c;更容易实现复杂的算法。 该团队由 Wolfgang Lechner&#xff08;右一&#xff09;领导&#xff0c;包括Kilian Ender&#xff08;右二&#xff09;、Anette Messinger&#xff08;左二&#xf…

七天免登录(Cookie+session)+ 页面显示动画人物效果(萌娘+气泡效果)

一.七天免登录&#xff08;Cookiesession&#xff09;&#xff0c;基于实现jsp页面 页面效果&#xff1a;勾选7天免登录复选框&#xff0c;输入用户名和密码&#xff0c;点击登录即可&#xff0c;登录后可在cookie中查看用户登录信息&#xff0c;以及用户过期时间 1.登录页面&…

通过heartbeat实现mysql高可用

192.168.6.128 主/heartbeat1 192.168.6.129 从/heartbeat2 192.168.6.131 漂移地址 主备基础&#xff1a;需要在128和129服务器上&#xff0c;搭建mysql主从复制 环境基础配置 128、129操作 # sed -i "s/SELINUXenforcing/SELINUXdisabled/g" /etc/selinux/…

C语言进阶-字符

C语言进阶-字符 #include <stdio.h> int main(int argc, char const *argv[]) {int ch;while ( (ch getchar()) ! EOF ) [putchar(ch);{printf("EOF\n"); }return 0; }强制程序结束 window 字符串数组

java和python调用matlab程序详细记录

Background 关于Java和Python调用matlab程序&#xff0c;网上相关文章很多&#xff0c;但质量不佳&#xff0c;有的前提条件也没介绍&#xff0c;你按照他的步骤来&#xff0c;他成功了&#xff0c;你失败了&#xff0c;很懵啊。我觉得&#xff0c;现在我们查询点什么东西费劲&…

C++11特性-多线程

多线程 线程不是越多越好&#xff0c;每个线程有有一个独立的堆栈空间1M.线程切换需要保存很多中间状态 商用程序的必须要求 并发的实现方法 多进程并发&#xff1a;进程通信&#xff08;同一电脑-文件、管道、共享内存、消息队列&#xff1b;不同电脑-socket&#xff09; 多线…

JSP课设:学生信息管理系统(附源码+调试)

JSP学生信息管理系统 &#xff08;1&#xff09;登录模块&#xff1a;本系统提供用户和管理员两种登陆方式&#xff0c;用户通过输入账号和密码&#xff0c;进行登录。 &#xff08;2&#xff09;注册模块&#xff1a;注册者输入账号和密码&#xff0c;并选择对应的权限级别&a…

交互式仪表板!Python轻松完成!⛵

&#x1f4a1; 作者&#xff1a;韩信子ShowMeAI &#x1f4d8; 数据分析实战系列&#xff1a;https://www.showmeai.tech/tutorials/40 &#x1f4d8; 本文地址&#xff1a;https://www.showmeai.tech/article-detail/410 &#x1f4e2; 声明&#xff1a;版权所有&#xff0c;转…

2022年iFLYTEKA.I.开发者大赛疫情微博情绪识别挑战赛

自然语言技术 零基础入门NLP - 新闻文本分类 基于word2vec的word相似度 疫情微博情绪识别挑战赛自然语言技术背景一、赛事任务二、使用步骤1.README2.数据下载3.模型训练及保存4.模型预测5.比赛结果背景 疫情发生对人们生活生产的方方面面产生了重要影响&#xff0c;并引发了…

写一个计算器【后缀表达式】(C++)

前言&#xff1a; 闲来无事&#xff0c; 用后缀表达式写了个计算器。。。 支持加()、减(-)、乘(*)、除(/)、乘方(^) 啥是后缀表达式&#xff1a; 波兰逻辑学家卢卡西维奇发明的表示表达式的方法 后缀式即逆波兰式&#xff0c;是波兰逻辑学家卢卡西维奇&#xff08;&#…

mysql根据父节点递归查询所有子节点,List转树形结构工具类

经常有业务需要递归查询MySQL树形结构某一节点的所有子节点&#xff0c;每次从网上扒拉找都得找半天&#xff0c;索性就自己总结一些自己遇到的比较好用的一些方法。 SQL方法一&#xff1a; SELECT* FROM(SELECTt1.*,IF( FIND_IN_SET( parent_id, parent_ids ) > 0, paren…

2022年先进封装行业研究报告

第一章 行业概况 封装为半导体产业核心一环&#xff0c;主要目的为保护芯片。半导体封装测试处于晶圆制造过程中的后段部分&#xff0c;在芯片制造完后&#xff0c;将晶圆进行封装测试&#xff0c;将通过测试的晶圆按需求及功能加工得到芯片&#xff0c;属于整个 IC 产业链中技…

Android平台GB28181设备接入端如何实时更新经纬度实现国标平台侧电子地图位置标注

技术背景 我们在做GB28181设备接入端的时候&#xff0c;其中有个功能&#xff0c;不难但非常重要&#xff1a;那就是GB28181实时位置的订阅&#xff08;mobileposition subscribe&#xff09;和上报(notify)。 特别是执法记录仪、智能安全帽、车载终端等场景下&#xff0c;现…

mysql-基础SQL语句CRUD

文章目录MySQL基础1&#xff0c;数据库相关概念1.1 数据库1.2 数据库管理系统1.3 常见的数据库管理系统1.4 SQL2&#xff0c;MySQL2.1 MySQL安装2.1.1 下载2.1.2 安装(解压)2.2 MySQL卸载2.3 MySQL配置2.3.1 添加环境变量2.3.2 新建配置文件2.3.3 初始化MySQL2.3.4 注册MySQL服…

国家涉及身份安全新规解读 | 《关键信息基础设施安全保护要求》

2022 年11 月 7 日&#xff0c;《信息安全技术关键信息基础设施安全保护要求》&#xff08;GB/T39204-2022&#xff09;国家标准发布。作为关键信息基础设施安全保护标准体系的构建基础&#xff0c;该标准将于 2023 年 5 月 1 日正式实施。 该标准提出了以关键业务为核心的整体…

软件测试内容的要点

软件测试内容的要点 20大的召开后&#xff0c;其中提出着力点坚持把发展经济的着力点放在实体经济上&#xff0c;加快建设制造强国、质量强国、航天强国、交通强国、网络强国、数字中国。 随着网络的快速发展&#xff0c;网络和数字已经呈现在大众的视野&#xff0c;软件产品…

2022-12-27 不下载Android Studio直接下载SDK、Platforms-tools、NDK

文章目录全平台支持&#xff01;&#xff01;&#xff01;1. 下载Command line tools only2. 解压command only3. 下载SDK, Platforms-tools, NDK全平台支持&#xff01;&#xff01;&#xff01; 1. 下载Command line tools only 官网链接&#xff1a;https://developer.and…

【电商】FMS财务管理系统---数据流转模块组成

继了解FMS财务管理系统定义之后&#xff0c;如何设计一个FMS系统成了新的问题&#xff0c;笔者在此介绍了FMS的业务逻辑和结构&#xff0c;希望对读者有所帮助。 在此还是要强调一下&#xff0c;虽然这里称之为“财务系统”&#xff0c;但和专业的财务软件有区别&#xff0c;只…