React Part1 总结

昨天学完了Jonas的React Part1 , 正好自己一直有想写博客的想法 ,于是来做一个总结

1.使用create-react-app创建一个react项目

在终端输入:npx create-react-app@版本号 项目名

2.渲染根组件,严格模式

src中需要有一个Index.js文件,因为项目中的模块捆绑工具Webpack要求入口为index.js

index.js中需导入两个模块 : React 和 ReactDOM

在react中函数开头必须大写,如App , Logo

一般用一个App函数来囊括需要渲染的组件,App是根组件,负责组织页面结构

在React中,一个组件通常只能返回一个根元素

设置好之后,设置root

const root = ReactDOM.createRoot(document.getElementById("root"));

root.render(

<React.StrictMode>

<App />

</React.StrictMode>

)

至此,App中的组件都会通过root渲染在网页中

(注 : 要在index.html中设置一个<div id="root"></div>)

3.组件树

react程序是由一个个组件构成的,组件之间也有父子关系

4.创建组件

将所有的组件包含在App中

这个就是嵌套组件,Header,Pizza,Footer都被嵌套在div组件中。在React中,一个组件通常只能返回一个根元素,所以如果去掉div会报错

在JSX中转换成js模式 : 用{} , 在{}内可使用数组,对象等等js的东西

一个组件由三部分组成 : Data , Logic , Appearance

5.在JSX中使用CSS

两种办法

1.作为属性添加在组件中

2.外联css

在JSX中设置类名 : className=""

5.props

可以理解为自定义属性,在 React 中,Props(Properties 的缩写)是组件间数据传递的核心机制

父组件 → 子组件传递数据(只读,子组件不能直接修改)

<UserCard />子组件的使用方式,而非父组件。父组件是调用 <UserCard /> 的组件(如示例中的 ParentComponent)。

张三和28是数据,由父组件传给了子组件

图中解构了数据,因为props的形式为一个对象,function UserCard({name,age})相当于直接解构了这个对象

Prop 和 State区别

State是组件内部的数据,可以通过组件的logic被修改

props的数据来自父元素,所以相当于props的数据来自组件外部,props只能被父元素修改

6.渲染列表

将列表中的数据一项一项通过props传入组件中

以视频中的例子:

有一个pizzaData的数组,里面存了很多pizza的数据,我想要把这些数据一个个存进Pizza这个组件中,可以用到map , 因为map会创建一个新的数组而不改变原数组 , 这样会生成一个个<Pizza pizzaObj={pizza} />的组件

这里就体现了Props的传递

7.react fragment

之前提到,一个root只能对应一个组件,所以当我们想在一个组件中同时渲染很多组件时需要用一个容器把他们包起来

这里用到了一个空<> , 这个好处是<>里面的组件都是平等的且与<>在DOM 层面:无父子关系,而在 React 组件树层面:Fragment 仍是逻辑父节点 , 而如果用<div>包裹的话它们则会和<div>形成父子组件关系

8.事件处理

直接在对应组件中绑定事件

如: <button onClick={()=>{}}>

注:绑定事件时不要调用函数,而是要指定函数值

两者区别

9.状态State

在 React 中,改变 props和state 会触发组件重新渲染

创建并改变一个状态 :

1.使用useState函数

useState函数里面有两个东西,一个是状态变量,还有一个是用来改变状态的函数,状态变量只能被这个函数修改

可以直接解构useState

1为状态变量的默认值,函数的命名一般为set什么什么

2.在代码中使用状态变量

3.用setStep函数来修改状态变量,这个函数里面最好再来一个回调函数

要根据状态的当前值更新状态时,我们可以在useState函数中使用回调函数

useState和其他hooks只能在函数的顶层使用

顶层:在函数组件的最外层作用域,不能嵌套在条件语句、循环、嵌套函数或其他块级作用域中

要使用useState , 得先导入useState模块

10.表单

表单中的三个东西

1.input

属性:1.type,指定Input输入值的类型

2.placeholder : 占位符

3.required : 强制输入

4.disabled : 禁止输入

2.select和option

他俩组合能实现下拉菜单选择功能

显示文本和value属性的区别

这里我发现一个我容易错的点

这个写法是错的,注意波浪线的花括号,在js中,如果使用花括号,必须要有一个return , 我这里漏了

正确的写法有两种

第一种是手动把return()给加上了

第二种就是把return省略

11.受控元素

受控元素(Controlled Components) 是指表单元素(如 <input><textarea><select>)的值完全由 React 状态(state)控制的组件

1.用useState设置状态变量和函数

2.在指定组件中设置value为元素值

3.用onChange来更新状态

12.状态的使用原则

全部评论

相关推荐

点赞 评论 收藏
分享
我对信贷业务其实不是特别感兴趣(当然也有价值,能把钱借给真正需要的人),但是对交易反欺诈这条线真的很感兴趣,觉得真的超级有意义。反欺诈产品是我们组支撑的产品线之一,看到和北京警企合作的推文,觉得报国有门,无比激动,我们未来的每一行代码,都能改变世界,帮助弱者不再受骗。还记得当时面试的时候,HR说我超过了很大部分二本学生的思维(后来知道我是我们组唯一的二本生),问我是如何做到的。我说因为16岁时候的梦想,我要做国家需要的工程师,后来发现自己不擅长物理,做不了芯片,但是一直希望自己能够做对社会真正有意义的产品。也记得第一次熟悉组里业务的时候,看到组里有一个产品叫交易反欺诈,当时仿佛触电一样,这简直是我接触到的最有意义的产品,下定决心以后一定要做这条产品线。我为警方办事,那我也是网络警察,我就可以改变这个世界(手动狗头)。也许没有人会知道我们的名字,但是我想大家一定能够感受到,是因为我们这些人的存在,生活才会有更多美好。当然,改变世界这个美好愿望,可能等我正式入职后会被工作毒打,可能上班就只想着下班,但人生总该有点期待,希望半年后再看自己这条动态,能欣慰的笑出来。我的原生家庭不怎么幸福,一路单打独斗到现在,我渴望靠工作改变命运,过上比父辈更好的生活,也更渴望自己成为自己幼年心目中那个了不起的英雄,为世界做出微小且美好的改变。&nbsp;&nbsp;
真烦好烦真烦:厉害,虽然现实很残酷,但是能在内心有自己的一份坚守真是太厉害了
点赞 评论 收藏
分享
昨天 02:37
青岛工学院 Erlang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务