用 React 实现搜索 GitHub 用户功能

用 React 实现搜索 GitHub 用户功能

在本篇博客中,我们将介绍如何在 React 应用中搜索 GitHub 用户并显示他们的信息。

创建 React 应用

首先,我们使用 Create React App 创建一个新的 React 应用。Create React App 是一个快速搭建 React 项目的工具,它提供了一个现代化的开发环境,让我们能够专注于编写代码而不必担心配置问题。

npx create-react-app github-user-search

安装 axios

我们将使用 axios 来发起 HTTP 请求。Axios 是一个简单易用的 JavaScript HTTP 客户端,用于在浏览器和 Node.js 环境中进行 HTTP 请求。

npm install axios

编写搜索组件

接下来,我们创建一个名为 Search 的组件,用于输入搜索关键字并触发搜索操作。这个组件包含一个输入框和一个搜索按钮,用户可以在输入框中输入关键字,然后点击按钮或按下回车键进行搜索。

// Search.jsimport React, { Component } from 'react';export default class Search extends Component {state = {keyword: '',}onChange = (e) => {this.setState({ keyword: e.target.value });}onSearch = () => {const { keyword } = this.state;const { onSearch } = this.props;onSearch(keyword);}onKeyPress = (e) => {if (e.key === 'Enter') {this.onSearch();}}render() {return (<div className="input-group mb-3"><inputtype="text"className="form-control"placeholder="输入关键字"onChange={this.onChange}onKeyPress={this.onKeyPress}/><div className="input-group-append"><buttonclassName="btn btn-outline-secondary"type="button"onClick={this.onSearch}>搜索</button></div></div>)}
}

编写用户列表组件

接下来,我们创建一个名为 Users 的组件,用于显示搜索到的用户列表。这个组件接收一个用户列表作为 prop,并根据列表中的用户信息渲染用户卡片。

// Users.jsimport React, { Component } from 'react';
import User from './User';export default class Users extends Component {render() {const { users } = this.props;return (<div className="row row-cols-4 g-4">{users.map(user => <User key={user.node_id} user={user} />)}</div>)}
}

编写用户组件

然后,我们创建一个名为 User 的组件,用于显示单个用户的信息。这个组件接收一个用户对象作为 prop,并根据用户信息渲染用户卡片。

// User.jsimport React, { Component } from 'react';export default class User extends Component {render() {const { user } = this.props;return (<div className="border p-3 d-flex flex-column align-items-center" style={{ width: '240px' }}><imgsrc={user.avatar_url}alt={user.node_id}className="rounded-circle"style={{ width: '50px', height: '50px' }}/><h4 className="text-primary">{user.login}</h4></div>)}
}

编写应用主组件

最后,在 App 组件中集成上述组件,并实现搜索功能。这个组件是我们应用的入口点,它负责管理整个应用的状态和逻辑。

// App.jsimport React, { Component } from 'react';
import axios from 'axios';import Search from './Search';
import Users from './Users';export default class App extends Component {state = {users: [],}onSearch = async (keyword) => {const res = await axios.get(`/api/github/search/users?q=${keyword || 'h'}`);if (res && res.data) {this.setState({ users: res.data.items || [] });}}render() {const { users }= this.state;return (<div className="container" style={{ margin: '20px auto' }}><Search onSearch={this.onSearch} /><Users users={users} /></div>)}
}

部署并使用

现在,你可以部署你的应用,并开始搜索 GitHub 用户了!
在这里插入图片描述

参考

  • 用 React 实现搜索 GitHub 用户功能
  • 完整代码

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

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

相关文章

Openharmony - HDF平台驱动之I2C驱动和测试程序

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 概述I2C平台驱动I2C平台驱动HDF框架I2C平台驱动的使用I2C应用开发接口说明代码目录i2ctest.cBUILD.gnbundle.json修改config.json文件…

Langchain-Chatchat:离线运行的大模型知识库 | 开源日报 No.182

chatchat-space/Langchain-Chatchat Stars: 22k License: Apache-2.0 基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现的开源、可离线部署的检索增强生成 (RAG) 大模型知识库项目。该项目是一个可以实现完全本地化推理的知识库增强方案&#xff0c;重点解决数据安全保护…

三菱plc控制双控电磁阀(从接线到程序)

目录 硬件设备 电磁阀的类型&#xff08;下图为例&#xff09; 三菱plc的类型&#xff08;西门子控正COOM接接正极&#xff0c;三菱控负COM接负极&#xff09; 气缸图 三菱plc与双控电磁阀接线 输出接线图&#xff08;COOM输出的公共端&#xff0c;三菱控负COM接负极&#x…

Nginx的核心配置指令及调优

目录 Nginx 核心配置指令 一、Nginx配置文件详解 1、配置文件目录 2、配置文件结构 二、调优 1、在全局域进行的调优 1.1线程池指令 1.2 工作进程数指令 1.3工作进程优先级指令 1.4 工作进程 CPU 绑定指令 1.5 调试可打开的文件个数 1.6 调试文件大小指令 1.7 只运…

[分子指纹]关于smile结构的理解

我的案例中有个奇怪的现象&#xff0c;我发现。 比如我有几个结构 Q1&#xff1a;C1C(O)C(C2C(C1)(C1C(CC2)(C2(C(CC1)C1C(CC2)(CCC(C1)(C)C)C(O)O)C)C)C)(C)C Q2&#xff1a;C1C(C(C2C(C1)(C1C(CC2)(C2(C(CC1)C1C(CC2)(CCC(C1)(C)C)C(O)O)C)C)C)(C)C)OT2&#xff1a;O(C1C(C…

《数据治理简易速速上手小册》第3章 数据质量管理(2024 最新版)

文章目录 3.1 数据质量的定义和标准3.1.1 基础知识3.1.2 重点案例&#xff1a;电商平台的数据清洗3.1.3 拓展案例 1&#xff1a;医疗保健机构的数据整合3.1.4 拓展案例 2&#xff1a;金融服务公司的交易数据监控 3.2 数据质量控制的方法与工具3.2.1 基础知识3.2.2 重点案例&…

【医学影像】LIDC-IDRI数据集的无痛制作

LIDC-IDRI数据集制作 0.下载0.0 链接汇总0.1 步骤 1.合成CT图reference 0.下载 0.0 链接汇总 LIDC-IDRI官方网址&#xff1a;https://www.cancerimagingarchive.net/nbia-search/?CollectionCriteriaLIDC-IDRINBIA Data Retriever 下载链接&#xff1a;https://wiki.canceri…

No matching version found for get-symbol-description@^1.0.2前端项目报错解决(亲测可用)

目录 一、问题详情 二、解决方案 一、问题详情 拉取一个新的项目的时候&#xff0c;前端进行install依赖的时候&#xff0c;报了如下的错误。 6120 verbose node v16.15.1 6121 verbose npm v8.11.0 6122 error code ETARGET 6123 error notarget No matching version foun…

golang学习2,golang开发配置国内镜像

go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct

tmux的使用方法

1. tmux的定义 我&#xff1a;什么是tmux&#xff1f; GPT&#xff1a;tmux&#xff08;terminal multiplexer&#xff09;是一个强大的终端复用器&#xff0c;它允许用户在一个终端窗口中创建、访问和控制多个会话。使用tmux&#xff0c;你可以在一个窗口中打开多个终端会话&…

关于python的数据可视化与可视化:数据读取

带着问题寻找答案可以使自己不再迷茫或者不知所措&#xff01; 了解什么python的数据可视化&#xff1f; 数据的读取&#xff08;一般伴随着课程文件中会进行提供和利用&#xff09; 数据可视化是将Python应用于大气海洋科学中数据处理及分析过程的重要环节&#xff0c;它可以…

使用 C++23 协程实现第一个 co_yield 同步风格调用接口--Qt计算排列组合

上一篇介绍了 co_await 的例子。与 co_await 类似&#xff0c;在C23的协程特性里&#xff0c; co_yield 用于从协程执行过程中暂停&#xff0c;并返回值。这个功能乍一听起来很奇怪&#xff0c;网上的例子大多是用一个计数器来演示多次中断协程函数&#xff0c;返回顺序的计数值…

3,设备无关位图显示

建立了一个类Dib Dib.h #pragma once #include “afx.h” class CDib :public CObject { public: CDib(); ~CDib(); char* GetFileName(); BOOL IsValid(); DWORD GetSize(); UINT GetWidth(); UINT GetHeight(); UINT GetNumberOfColors(); RGBQUAD* GetRGB(); BYTE* GetDat…

【JavaScript 漫游】【022】事件模型

文章简介 本篇文章为【JavaScript 漫游】专栏的第 022 篇文章&#xff0c;对 JavaScript 中事件模型相关的知识点进行了总结。 监听函数 浏览器的事件模型&#xff0c;就是通过监听函数&#xff08;listener&#xff09;对事件做出反应。事件发生后&#xff0c;浏览器监听到…

【 C++ 】闭散列哈希表的模拟实现

哈希节点状态 我们都很清楚数组里的每一个值无非三种状态&#xff1a; 如果某下标没有值&#xff0c;则代表空EMPTY。如果有值在代表存在EXIST。如果此位置的值被删掉了&#xff0c;则表示为DELETE。 而这三种状态我们可以借助enum枚举来帮助我们表示数组里每个位置的状态。…

Oracle ADG相关介绍

文章目录 一、ADG原理1、ADG介绍2、ADG搭建流程 二、ADG相关参数三、增量修复 一、ADG原理 1、ADG介绍 Oracle ADG&#xff08;Advanced Data Guard&#xff09;是Oracle数据库的一项高可用和灾难恢复技术&#xff0c;它通过将数据保持在物理备库中来提供数据保护和容灾能力。…

每日五道java面试题之spring篇(七)

目录&#xff1a; 第一题. 什么是Spring beans&#xff1f;第二题. 一个 Spring Bean 定义 包含什么&#xff1f;第三题. 如何给Spring 容器提供配置元数据&#xff1f;Spring有几种配置方式?第四题. Spring基于xml注入bean的几种方式?第五题&#xff1a;你怎样定义类的作用域…

POST参数里加号+变成空格的问题处理

今天遇到个这样的问题&#xff0c;从前端传到后端的加密报文&#xff0c;里面包含了号&#xff0c;但在后端日志输出看出&#xff0c;变成空格。这个是由于经过RSA加密后引起的 解决办法&#xff1a; 1.前端转码&#xff1a;使用encodeURIComponent对参数进行转码 2.后端解码…

【自然语言处理四-从矩阵操作角度看 自注意self attention】

自然语言处理四-从矩阵操作角度看 自注意self attention 从矩阵角度看self attention获取Q K V矩阵注意力分数softmax注意力的输出再来分析整体的attention的矩阵操作过程从矩阵操作角度看&#xff0c;self attention如何解决问题的&#xff1f;W^q^ W^k^ W^v^这三个矩阵怎么获…

OpenCV 16 - Qt使用opencv视觉库

1 下载好opencv视觉库 不知道怎么下载和编译opencv视觉库的可以直接使用这个 : opencvcv_3.4.2_qt 2 解压opencv包 3 打开opencv的安装目录 4.打开x86/bin 复制里面所有的dll文件&#xff0c;黏贴到C/windows/syswow64里面 5 新建Qt项目 6 修改pro文件:添加对应的头文件和库文件…