2022 React 最速上手指南(六)—— JSX 处理函数 & React props

简介: 2022 React 最速上手指南(六)—— JSX 处理函数 & React props

以结果为导向,写给刚学完前端三剑客和想要了解 React 框架的小伙伴,使得他们能快速上手(省略了历史以及一些不必要的介绍)。



JSX 处理函数


在 HTML 中,input 输入框有一个 onchange 事件处理函数,我们可以随意定义一个函数传给 onChange 属性,用来处理 input 的 change 事件,在 React 中这种函数叫做(事件)处理函数。


  • 通常在组件内部定义
  • 函数名称以 handle 开头,事件名称紧随其后


const App = () => {
  const handleChange = (e) => {
    console.log(e.target.value);
  };
  return (
    <div>
      <label htmlFor="search">Search: </label>
      <input id="search" type="text" onChange={handleChange} />
      <hr />
      <List />
    </div>
  );
};
复制代码


在浏览器中打开应用,然后按下 F12 打开开发者工具,在终端一栏就可以看到输入框输入的内容了。


这被称为合成事件,由一个 JS 对象拿到输入框的值,本质上就是把浏览器的原生事件包了一层,附加了一些有用的函数。


我们通过给 HTML 元素附加上 JSX 处理函数来响应用户交互,只需要把函数传给这些处理函数,而不是返回值,除非返回值也是一个函数:


// 这样写不对!
<input onChange={handleChange()} />  
复制代码


React Props


我们现在把 list 变量作为一个全局变量供 App 组件和 List 组件直接使用,但如果不同文件中的多个组件使用多个变量是行不通的,我们可以使用所谓的 props 把变量从一个组件传给另一个组件。


先把 list 重命名,并移至 App 组件内部,然后使用 React props 把这个数组传给 List 组件:


const App = () => {
  // 全局变量移入
  const stories = [
    {
      ...
    },
    {
      ...
    },
  ];
  ...
  return (
    <div>
      ...
      <hr />
      <List list={stories} />
    </div>
  );
};
const List = (props) => (
  <ul>
    {props.list.map((item) => (
      ...
    ))}
  </ul>
);
复制代码


stories 变量在 List 组件实例化时赋给了 list 属性,然后我们在 List 组件的函数签名中通过 props 对象中的 list 访问到了它,这样操作可以避免变量污染全局作用域。

个人对 props 的浅薄理解


  • 组件就是一个函数,它对外暴露了一个可以接收外界的数据的接口,也就是 props 对象
  • 可以把 props 理解成从父组件向子组件传递的数据,子组件接收到的 props 已成既定,不可改变
  • 如果组件想要更改它的 props,必须要求父组件传递新的 props 对象,然后将旧的 props 丢弃等待 JS 引擎回收
  • 所以当需要响应用户输入或者实现应用交互时,我们通常使用 state


专栏


因为参加打卡活动是每日更新,所以可能比较短小,可以关注一下 React 入门专栏

在更新完后会整合为一整篇,感谢关注和点赞!

目录
相关文章
|
21天前
|
前端开发 开发者
React 函数组件与类组件对比
【10月更文挑战第4天】本文详细比较了React中的函数组件与类组件。函数组件是一种简单的组件形式,以纯函数的形式返回JSX,易于理解与维护,适用于简单的UI逻辑。类组件则是基于ES6类实现的,需要重写`render`方法并能利用更多生命周期方法进行状态管理。文章通过示例代码展示了两者在状态管理与生命周期管理上的差异,并讨论了常见的问题如状态更新异步性与生命周期管理的复杂性,最后给出了相应的解决方法。通过学习,开发者可以根据具体需求选择合适的组件类型。
44 8
|
2月前
|
前端开发 JavaScript
react学习(13)props
react学习(13)props
|
2月前
|
前端开发
学习react基础(2)_props、state和style的使用
本文介绍了React中组件间数据传递的方式,包括props和state的使用,以及如何在React组件中使用style样式。
29 0
|
2月前
|
前端开发
React添加路径别名alias、接受props默认值、并二次封装antd中Modal组件与使用
本文介绍了在React项目中如何添加路径别名alias以简化模块引入路径,设置组件props的默认值,以及如何二次封装Ant Design的Modal组件。文章还提供了具体的代码示例,包括配置Webpack的alias、设置defaultProps以及封装Modal组件的步骤和方法。
55 1
React添加路径别名alias、接受props默认值、并二次封装antd中Modal组件与使用
|
2月前
|
前端开发 JavaScript 区块链
react18函数组件+antd使用指南-使用代码集合以及报错记录汇总
本文介绍了多个React开发中常见的问题及其解决方案,包括但不限于:1)`useForm`实例未连接到任何`Form`元素的警告及解决方法;2)监听页面滚动事件的实现方式;3)React 18与antd 5.8.6中定制主题的方法;4)React结合antd 4.x版本自定义主题色的步骤;5)解决`ResizeObserver loop`相关报错的技巧;6)处理React设计表单时遇到的CDN资源加载失败问题;7)解决onClick事件传参问题;8)修复类型错误等。每部分均提供详细分析与实用代码示例,帮助开发者快速定位并解决问题。
34 2
|
18天前
|
前端开发 JavaScript CDN
React Props
10月更文挑战第8天
10 0
|
2月前
|
XML JavaScript 前端开发
学习react基础(1)_虚拟dom、diff算法、函数和class创建组件
本文介绍了React的核心概念,包括虚拟DOM、Diff算法以及如何通过函数和类创建React组件。
22 2
|
2月前
|
前端开发
react学习(15)函数式组件中使用props
react学习(15)函数式组件中使用props
|
2月前
|
前端开发
react学习(22)高阶函数和函数柯里化
react学习(22)高阶函数和函数柯里化
|
2月前
|
前端开发
react学习(14)类式组件的构造器与props
react学习(14)类式组件的构造器与props