首页 > 其他分享 >REACT小练习

REACT小练习

时间:2024-04-18 23:45:35浏览次数:12  
标签:function useRef return 练习 REACT export useState const

react组件间props传递

function Detail({content,active}){
    return(
        <div>
            <p>{content}</p>
            <p>{active?'已激活':'未激活'}</p>
        </div>
    )

}

function Article ({title,detailData}){
    return(
        <div>
            <h1>{title}</h1>
            <Detail {...detailData}/>
        </div>
    )

}
export default function HomePage() {
    const articleData={
        title:'文章标题',
        detailDate:{
            content:'内容',
            active:true,
        }
    }
  return (
      <>
      <Article {...articleData}/>
      </>
  );
}

 

react children 传递组件

function List({title,footer,children}){
    return(
        <>
        <h2>{title}</h2>
            <ul>
            {children}
            </ul>
            {footer}
        </>
    )

}


export default function HomePage() {

  return (
      <>
      <List
       title="标题1"
       footer="底部1"
      >
          <li>内容1</li>
          <li>内容1</li>
          <li>内容1</li>
      </List>
      </>

  );
}

子组件向父组件传值

import {useState} from "react";

function Detail ({handleActive}) {
    const [status,setStatus] = useState(false)
    function handleClick (){
        setStatus(!status)
        handleActive(status)
    }
    return (

        <div>
            <button onClick={handleClick}>Click</button>

            <p style={{display:status?'block':'none'}}>Detail的内容</p>
        </div>

    )
}


export default function HomePage() {
function handleActive (status){
    console.log(status)
}
  return (
      <>
          <Detail handleActive={handleActive} />
      </>
  );
}

HOOKS :useReducer

import {useReducer,useState} from "react"
function reducer(state,action){
    if(action.type==='go'){
        return {age:state.age+1}
    };
    
}
export default function HomePage() {
const [state,dispatch]=useReducer(reducer,{age:42});
  return (
      <>
      <button onClick={()=>dispatch({type:'go'})}>
          plus
      </button>
          <p>hello you are {state.age}</p>
      </>
  );
}

HOOKS :useRef 保留上一次值的用法:

import {useRef,useState} from 'react'
export default function HomePage() {
const [count, setCount] = useState(0);
const prevCount = useRef();
function handleClick(){
    prevCount.current= count;
    setCount(count+1)
}
return (
    <div>
        <p>last count:{prevCount.current}</p>
        <p>current count:{count}</p>
        <button onClick={handleClick}>add</button>
    </div>
  );
}

HOOKS :useRef 和标签绑定:

import {useState,useRef} from "react"
export default function App() {
    const inputRef=useRef(null)
    function handleClick(){
        inputRef.current.focus()
    }

    return (
        <div>
            <input type="text" ref={inputRef} />
            <button onClick={handleClick}>button</button>
        </div>
    )
}

 

标签:function,useRef,return,练习,REACT,export,useState,const
From: https://www.cnblogs.com/wrtcom/p/18144773

相关文章

  • 1 React介绍
    一React介绍1、React是渲染用户界面(UI)的JavaScript库2、React完全基于JavaScript用JavaScript可以生成结构、使用样式及控制逻辑3、学习路径JSX-》组件-》Hooks-》状态管理-》路由二开发环境搭建1、创建项目npxcreate-react-appreact-basicReact脚手架......
  • React初次使用
    大概过了一下JS,今天再试试React一、React核心语法1、脚手架创建一个项目npxcreate-react-appdemo2、插值functionApp(){constdivContent='标签内容'constdivTitle='标签标题'return(<divclassName="App"><headerclassName="A......
  • react-native-camera 安装
    npmi react-native-camera--save或yarnadd react-native-camera 在android/app/build.gradle中添加:missingDimensionStrategy'react-native-camera','general'implementationproject(path:':react-native-camera') 在MainApplicatio......
  • react 的拖动面板SplitPane的使用
    1、我刚开始,是准备使用npminstallreact-split-pane来引入的。但是引入的过程报错了npmERR!codeERESOLVEnpmERR!ERESOLVEunabletoresolvedependencytreenpmERR!npmERR!Whileresolving:[email protected]!Found:[email protected]!n......
  • react 使用effect 的报错
    1、像这种,根据someId值的改变,每次调用一次useEffect的。如果在useEffect加上async则会出现报错 正确的做法,则是去掉useEffect上的async useEffect(()=>{asyncfunctionfetchData(){try{//在这里进行异步操作constresponse=awaitMyAPI.g......
  • React 简单登录平台Demo(0):环境配置
    目录前言Create-react-app环境配置文件路径添加组件添加tailWindcss文件tailwind.config.js添加compilecss目标常见错误添加路由简单路由添加复杂路由添加LoginPageMainPagerouter.js总结前言这次用React简单写一个登录网页的DemoCreate-react-app环境配置create-react-app......
  • React 添加常用通用框架
    目录前言React第三方库使用ant-design安装推荐使用react-icons:icon库安装简单使用react-router:React路由添加TailwindCSS:html通用组件TailwindCSS安装yesicon中文Icon网daisyuiEchart+echarts-for-react总结前言今天来写一个简单的后台管理页面,没有后端接口,都是模拟的数......
  • React性能优化手册
    此文章属于笔记总结。对应的课程地址:https://www.pluralsight.com/courses/react-performance-playbook相关网站:https://web.developers.google.cn/?hl=zh-cn性能审查检测指标CoreWebvitals:衡量网站是否运行正常的基本指标LCP,LargestContentfulPaint最大内容绘制......
  • React 学习笔记:刚开始接触
    目录前言相关链接个人对React和Vue的初步感觉React和Vue官方态度的区别ReactVue新建第一个React项目复制官方的文档代码教程:井字棋游戏React个人使用体验返回html修改样式作用域React的常用组件ReactDeveloperToolsReact开发工具React框架推荐总结前言之前有断断续续学过一段......
  • 结对编程 c++语言实现四则运算练习题
    结对同学:2252813程序要求:两个运算符,100以内的数字,不需要写答案。需要检查答案是否正确,并且保证答案在0-100之间通过阅读题目要求,我们决定使用c++语言完成编程,需要满足两个功能,首先生成一个包含两个运算符的算式,参与运算的数字在100之内。下一步检查答案是否正确,并且保证答......