聊一聊React的事件

事件

什么是事件

React 的事件处理和 DOM 元素类似。但是语法上是不同的:

  1. React 事件绑定属性时采用驼峰命名法,而不是小写。
  2. 如果采用 JSX 的语法你需要传入一个函数作为事件处理函数,而不是一个字符串(DOM 元素的写法)

事件的写法

HTML中的写法

<button onClick="addAge()">点我啊</button>

JSX中的写法

<button onClick={this.addAge}>点我啊</button>

我们在处理一些简单逻辑的时候,可以直接写要处理的事情

<button onClick={console.log("hello world")}>点我涨一岁</button>

但这种方式在逻辑比较复杂的情况下会造成代码不够简洁,不能够一目了然的看清代码,所以一般拉出去写一个函数

class App extends Component{
	addAge(){
        console.log(123)
    }
	render(){
        return (<div>
	            <button onClick={this.addAge}>点我啊</button>
	        </div>)
    };
}

this指向的问题

这里会牵扯到this指向的问题,比如说这段代码:

class App extends Component{
	addAge(){
        console.log(this)
    }
	render(){
        return (<div>
	            <button onClick={this.addAge}>点我啊</button>
	        </div>)
    };
}

浏览器反馈
在这里插入图片描述
通常这里最简单的处理方法是将函数替换为箭头函数,如下所示:

class App extends Component{
	addAge = ()=>{
        console.log(this)
    }
	render(){
        return (<div>
	            <button onClick={this.addAge}>点我啊</button>
	        </div>)
    };
}

浏览器反馈
在这里插入图片描述

state

state是什么

state——组件自身状态

state与props的区别是什么

  1. state 的主要作用是用于组件保存、控制、修改 自己 的可变状态,在组件内部进行初始化,也可以在组件内部进行修改,但是组件外部不能修改组件的 state
  2. props 的主要作用是让使用该组件的父组件可以传入参数来配置该组件,它是外部传进来的配置参数,组件内部无法控制也无法修改
  3. state 和 props 都可以决定组件的外观和显示状态。通常,props 做为不变数据或者初始化数据传递给组件,可变状态使用 state

从实例中来学习state的使用

需求:将该列表实现点击缩进,再次点击弹出这样一功能
在这里插入图片描述
该列表基本代码

// index.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './app';

ReactDOM.render(
  <App />,
  document.getElementById('root')
);
//==================================================================

// app.js
import React,{Component} from "react";
import FriendList from './FriendList';

class App extends Component{
    render(){
        return (<div>
            <FriendList />
        </div>)
    };
}
export default App;
//==================================================================

// FriendList .js
import React,{Component} from "react";
import './FriendList.css';
import data from './data';
import Dl from './dl'

export default class FriendList extends Component {
    render(){
        return (
            <div className="friend-list">
                {
                    Object.keys(data).map((item,index)=>{
                        return <Dl key={index} value={data[item]}/>
                    })
                }
            </div>
        )
    }
}
//==================================================================
// dl.js
import React,{Component} from "react";

export default class Dl extends Component{
	render() {
        let {title,list} = this.props.value
        return (
            <dl className="friend-group">
                <dt>{title}</dt>
                {
                    list.map((item,index)=>{
                        return <dd key={index}>{item.name}</dd>
                    })
                }
            </dl>
        )
    }
}
//==================================================================

首先我们我们的需求是点击实现列表的收缩,所以我们需要给dt加一个点击事件,然后通过这个事件的触发来控制一个变量,从而让该列表实现收缩功能

1. 给dt添加点击事件

<dt onClick={this.showHide}>{title}</dt>

2. 点击事件控制变量

    constructor(props){
        super(props);
        this.state = {
            showOrHide:true,
        }
    }
    showHide = ()=>{
        this.setState(res => ({
            showOrHide : !res.showOrHide
        }))
    }

注意点:

  • 当我们需要修改this.state 里边的值的时候,我们需要使用setState
  • this.setState这个方法里使用箭头函数时,我们的this.state必须写在constructor里边

3. 是用三目运算符从而达成通过变量控制列表收缩

    render() {
        ...
        return (
            ...
                {
                    this.state.showOrHide ? list.map((item,index)=>{
                        return <dd key={index}>{item.name}</dd>
                    }) : null
                }
            ...
        )
    }
潮汐研究作为海洋科学的关键分支,融合了物理海洋学、地理信息系统及水利工程等多领域知识。TMD2.05.zip是套基于MATLAB环境开发的潮汐专用分析工具集,为科研人员与工程实践者提供系统化的潮汐建模与计算支持。该工具箱通过模块化设计实现了两大核心功能: 在交互界面设计方面,工具箱构建了图形化操作环境,有效降低了非专业用户的操作门槛。通过预设参数输入模块(涵盖地理坐标、时间序列、测站数据等),用户可自主配置模型运行条件。界面集成数据加载、参数调整、可视化呈现及流程控制等标准化组件,将复杂的数值运算过程转化为可交互的操作流程。 在潮汐预测模块中,工具箱整合了谐波分解法与潮流要素解析法等数学模型。这些算法能够解构潮汐观测数据,识别关键影响要素(包括K1、O1、M2等核心分潮),并生成不同时间尺度的潮汐预报。基于这些模型,研究者可精准推算特定海域的潮位变化周期与振幅特征,为海洋工程建设、港湾规划设计及海洋生态研究提供定量依据。 该工具集在实践中的应用方向包括: - **潮汐动力解析**:通过多站点观测数据比对,揭示区域主导潮汐成分的时空分布规律 - **数值模型构建**:基于历史观测序列建立潮汐动力学模型,实现潮汐现象的数字化重构与预测 - **工程影响量化**:在海岸开发项目中评估人工构筑物对自然潮汐节律的扰动效应 - **极端事件模拟**:建立风暴潮与天文潮耦合模型,提升海洋灾害预警的时空精度 工具箱以"TMD"为主程序包,内含完整的函数库与示例脚本。用户部署后可通过MATLAB平台调用相关模块,参照技术文档完成全流程操作。这套工具集将专业计算能力与人性化操作界面有机结合,形成了从数据输入到成果输出的完整研究链条,显著提升了潮汐研究的工程适用性与科研效率。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值