首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

React组件事件通知

前言

学无止境,无止境学。坚持每天学点编程知识,坚持每天写点小文章,坚持每天进步一点点。大家好,我是张大鹏,喜欢学习和分享,希望能够通过此公众号,将自己学到的东西分享给大家,和大家一起交流,一起成长,一起进步。

乾坤未定,你我皆是黑马。大鹏一日同风起,扶摇直上九万里。宝剑锋从磨砺出,梅花香自苦寒来。不积跬步,无以至千里,不积小流无以成江海。

如果有多余的时间,就坚持学习吧,小时候学习改变命运,长大了学习丰富内涵,老了学习带来宁静。活到老,学到老,我能行!

概述

《React零基础入门班》收费说明:

时长:10节课

价格:1000元

内容:React从入门到项目实战

上课方式:腾讯会议小班教学

本篇文章是《React零基础入门班》的第5篇文章,前面还有:

《第一个React程序》

《React常用方法》

《React使用JSX开发菜谱应用》

《使用webpack让React模块化》

《React的状态管理》

本篇将基于《React的状态管理》继续介绍由子组件通知父组件实现状态更新的方法。主要有两个案例:

点击删除图标按钮的时候,删除对应的颜色组件

点击星星图标的时候,重新渲染评分组件

实现删除颜色

修改颜色组件

目标

1、给颜色组件加上一个删除按钮。

2、给删除按钮绑定一个删除事件。

3、当用户点击删除按钮的的时候通知父组件执行操作。

实现方案

第一步:引入图标

import from "react-icons/fa"

第二步:在JSX中加一个按钮元素

第三步:让组件接收一个onRemove方法作为属性

Color()

完整代码

components/Color.js

import React from 'react';

import StarRating from './StarRating';

import from "react-icons/fa"

export default function Color() {

return (

onRemove(id)}>

)

}

修改颜色列表组件

目标

接收一个onRemoveColor方法作为属性,并将该属性绑定到颜色组件的onRemove方法上。实现当用户点击删除按钮的时候,将事件继续往父组件传递。

即就是说,颜色列表组件相当于一个中间人,传递了如何处理颜色删除按钮的点击方法。该方法的真实实现还在颜色列表的父组件中。

实现方案

第一步:给颜色组件绑定onRemove方法

第二步:接收一个onRemoveColor方法作为属性

ColorList ( { colors = [], onRemoveColor = f=>f } )

完整代码

components/ColorList.js

import React from 'react';

import Color from './Color';

export default function ColorList ( { colors = [], onRemoveColor = f=>f } )

{

if ( !colors.length ) return 没有颜色数据

return (

{

colors.map( color => )

}

)

}

修改根组件

目标

处理颜色删除按钮的点击事件,实现如何删除颜色组件的方法。

实现方案

第一步:从hooks中接收第二个参数,用于设置颜色列表

const [ colors,setColors ] = useState( colorData )

第二步:给颜色列表组件绑定onRemoveColor方法。该方法的实现方式很简单,就是过滤掉被删除的颜色,将剩下的颜色重新赋值给颜色列表。

onRemoveColor=

完整代码

App.js

import { useState } from 'react';

import colorData from './data/color.json';

import ColorList from './components/ColorList';

export default function App ()

{

const [ colors,setColors ] = useState( colorData )

return

}

实现点击评分

修改评分组件

目标

1、接收一个onRate评分方法作为参数

2、让星星图标被点击的时候,触发onRate评分方法

实现方案

第一步:接收onRate方法作为参数

StarRating({

style = {},

totalStars = 5,

selectedStars = 0,

onRate = f => f,

...props

}) {

第二步:给星星图标绑定点击事件,触发评分方法

selected=

onSelect={() => onRate(i + 1)}

/>

完整代码

components/StarRating.js

import React from 'react';

import Star from "./Star.js"

const createArray = length => [...Array(length)]

export default function StarRating({

style = {},

totalStars = 5,

selectedStars = 0,

onRate = f => f,

...props

}) {

return (

selected=

onSelect={() => onRate(i + 1)}

/>

))}

/

)

}

修改颜色组件

目标

1、接收onRate评分方法作为参数

2、给评分组件绑定评分方法,向上传递颜色ID和新的评分

实现方案

第一步:接收onRate方法作为参数

Color()

第二步:给评分组件绑定评分方法

onRate=/>

完整代码

components/Color.js

import React from 'react';

import StarRating from './StarRating';

import from "react-icons/fa"

export default function Color() {

return (

onRemove(id)}>

)

}

修改颜色列表组件

目标

1、接收一个onRateColor评分方法作为参数

2、给颜色组件绑定评分方法

实现方案

第一步:接收一个onRateColor评分方法作为参数

ColorList()

第二步:给颜色组件绑定评分方法

onRemove=

onRate=/>

完整代码

import React from 'react';

import Color from './Color';

export default function ColorList() {

if (!colors.length) return 没有颜色数据

return (

{

colors.map(color => )

}

)

}

修改根组件

目标

实现onRateColor方法,让星星图标每次被点击的时候,都能够触发新的评分,重新渲染页面。

实现方案

给颜色列表组件绑定onRateColor方法

onRateColor={(id, rating) => {

const newColors = colors.map(color => color.id === id ?

{...color, rating} : color)

console.log("222", newColors)

setColors(newColors)

}}

完整代码

import from 'react';

import colorData from './data/color.json';

import ColorList from './components/ColorList';

export default function App() {

const [colors, setColors] = useState(colorData)

return {

const newColors = colors.map(color => color.id === id ? {...color, rating} : color)

console.log("222", newColors)

setColors(newColors)

}}/>

}

总结

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230112A00JPI00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券