React+hooks+TS练习

一、初始化项目

  1. 通过create-react-app命令创建项目,–template表示使用typescript(node版本高于14才能使用npx)

     npx create-react-app jira --template typescript
    
  2. 配置绝对路径
    在tsconfig.json中配置baseUrl,表示项目中的绝对路径是从src目录下开始寻找。
    在这里插入图片描述

  3. 使用json-server来Mock数据
    首先安装json-server:yarn add json-server -D
    在根目录下创建_json_server_mock__文件夹,用来存放模拟的数据(名字可随意)
    在这里插入图片描述

    在package.json中配置scripts,新增json-server的命令:"json-server": "json-server __json_server_mock__/db.json --watch --port 3001"
    在这里插入图片描述
    由于json-server默认跑在3000的端口号上,和项目跑的端口号冲突,因此修改json-server的端口号为3001。
    此时执行 npm run json-server 就可以启动json-server,进行数据的模拟。

  4. 配置api根路径
    在根目录下创建 .env 和 .env.development文件, .env 是项目上线后使用的, .env .development是开发中使用的。在.env.development文件中添加:
    REACT_APP_API_URL = http://localhost:3001
    在项目中使用:
    const apiUrl = process.env.REACT_APP_API_URL

二、JSX实现小demo

通过本demo的实现,可对React的状态提升、组件结合、数据传递和两个最基本hook有了一个完整的使用过程。
在这里插入图片描述
接口格式
在这里插入图片描述
在这里插入图片描述

实现思路:可分成search_panel和list两个组件,在index中进行状态的保存,将状态通过props传递给search_panel和list两个组件使用。

// index.js
const apiUrl = process.env.REACT_APP_API_URL;

export const ProjetcList = () => {
   
 
    const [param, setParam] = useState({
   
        name: '',
        personalId: ''
    })

    // 存放底部列表数据
    const [list, setList] = useState([])

    // 存放下拉列表数据
    const [users, setUsers] = useState([])

    // input输入框或者下拉框内容改变,则请求数据
    useEffect(() => {
   
        fetch(`${
     apiUrl}/projects?${
     qs.stringify(cleanObj(param))}`).then(async response => {
   
            if(response.ok) {
   
                setList(await response.json())
            }
        })
    }, [param])

    // 请求users
    useEffect(() => {
   
        fetch(`${
     apiUrl}/users`).then(async response => {
   
            if(response.ok) {
   
                setUsers(await response.json())
            }
        })
    }, [])

    return (
        <div>
            <SearchPanel users={
   users} param={
   param} setParam={
   setParam}/>
            <List users={
   users} list={
   list}/>
        
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值