React实战之数据流方向与项目初始化

简介: React实战之数据流方向与项目初始化

@[toc]

数据流方向

在这里插入图片描述

如果以前研究过angular,应该知道双向数据绑定的概念。
指令为ng模式。Angular是双向数据流,父组件和子组件之间的通信相对方便。
但有时,我们不希望儿子改变父亲的价值观。我们只能使用它,不能改变它。
react最明显的一点是,Vue中的表单控件也有一个V型双向数据绑定指令。
当父组件传递值时,可以直接传递列表。
但是,它对于子组件是只读的。尝试修改后,将报告错误。
当不考虑Redux和flux等状态管理框架时,上述方法通常用于父子组件通信。

与jQuery结合

首先,这两个可以一起使用。
React只关心挂载的根元素root。
其他元素不关心。做你喜欢做的事。换句话说,jQuery不操作根中的元素
事实上,这个问题没有实际意义,技术选择本身也有问题,一个主张控制DOM,另一个不建议控制DOM。

    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
   <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
   <script>alert($)</script>

也许你想试试。好的,试试看打开索引。公共文件夹下的html,并将其删除而不添加注释。

PropTypes类型检查

JS是一种基于面向对象思想的语言,而不是真正的面向对象语言。它
在类型检测方面并不完美,这是typescript起火的原因之一。
当父组件将数据传输到子组件时,对要传输的属性值没有限制。
自由度太高。这在工作中是完全不允许的。对于大型项目,缺乏必要的校准,后期维护极其困难。

import PropTypes from 'prop-types'

类外部使用:

xxx.propTypes={
       p1:PropTypes.string.isRequired,
       p2:PropTypes.func,
       p3:PropTypes.number
}

生命周期

生命周期就像从出生到死亡的过程。在react中,这些生命周期钩子函数非常有用,我们将在许多场合遇到它们。
此外,值得注意的是,react的每个组件都具有上述所有周期函数,而不仅仅是根组件或父组件。严格来说,生命周期函数将在从组件渲染到组件销毁的过程中的某个点自动执行,因此不必担心。
但渲染是特殊的。react的所有生命周期函数都有默认实现,但render除外。

import fetchJsonp from 'fetch-jsonp'
fetchJsonp('/users.jsonp')
  .then(function(response) {
    return response.json()
  }).then(function(json) {
    console.log('parsed json', json)
  }).catch(function(ex) {
    console.log('parsing failed', ex)
  })

换句话说,不能在组件中编写任何周期函数,也不能编写构造函数,但不能编写渲染。

  <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
   <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
   <script>alert($)</script>

父->子组件传值

最基本的事情是传递属性的值。
上述父->子值转移结束,todo_该项是自定义的,保证与子项接收的名称相同
子组件需要以this.props的形式接收。xxx,这是这个道具。todo_项目
子组件

<noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
   <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
   <script>alert($)</script>

在上面的示例中,当父组件传递值时,可以直接传递列表。但是,它对于子组件是只读的。尝试修改后,将报告错误。当不考虑Redux和flux等状态管理框架时,上述方法通常用于父子组件通信。

极致快vs高效率

前者需要压缩,而后者不需要
前者删除注释,而后者不删除
前者不需要热更新,而后者需要热更新
测试工具:不需要前者,需要后者
语法检查工具:不需要前者,需要后者
在这里插入图片描述

项目初始化

项目名称不必与我的相同。只要接通并启动它
NPM I-G纱线(可选命令)
此外,如果已在全球范围内安装了纱线,则可以从纱线开始
安装过程可能有点慢,请稍候
在这里插入图片描述

类组件和函数组件的编写

在react中,一切都是一个组件。传统布局的头部、左侧导航、主要内容和尾部可以视为组件并独立维护。它就像积木。小部件最终形成小房子。React组件分为两种类型,函数组件和类组件,这两种组件都使用。相反,此类组件更常见,但如果组件中不涉及业务逻辑,则更好地使用功能组件。下面是一个例子来说明两者之间的区别。

function Header(){
  return <h1>我是头部</h1>;
}

仔细观察后,会发现应用程序组件也是一个功能组件。
此外,组件以大写字母定义和使用。
事实上,在react中,区分组件和HTML标记的方法是case。
大写字母作为组件进行解析,小写字母作为HTML标记进行解析。顺便说一句,不管是单标签还是双标签。这取决于个人习惯。

function App() {
  return (
    <Header/>
  );
}

真正的关键字定义类从ES6开始,使用类。接下来,用类组件重写上述应用程序函数组件,以获得相同的效果,并输出Hello world。

import React, {Component} from 'react'
class App extends Component{
    render(){
        return (
            <div>
                hello world
            </div>
        )
    }
}
export default App;

在react中,图片的介绍是特别的,分为本地图片介绍和网络图片参考
网络图片引用与之前相同,IMG-tag-SRC属性写入图片链接地址
无法以这种方式导入本地映像。
它需要以路径的形式导入,并具有alt属性

相关文章
|
3月前
|
前端开发 JavaScript
React项目路由懒加载lazy、Suspense,使第一次打开项目页面变快
本文介绍了在React项目中实现路由懒加载的方法,使用React提供的`lazy`和`Suspense`来优化项目首次加载的速度。通过将路由组件改为懒加载的方式,可以显著减少初始包的大小,从而加快首次加载速度。文章还展示了如何使用`Suspense`组件包裹`Switch`来实现懒加载过程中的fallback效果,并提供了使用前后的加载时间对比,说明了懒加载对性能的提升作用。
243 2
React项目路由懒加载lazy、Suspense,使第一次打开项目页面变快
|
3月前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
299 1
|
1月前
|
移动开发 前端开发 JavaScript
React 表单验证实战
【10月更文挑战第25天】本文介绍了 React 表单验证的常见方法,包括原生 HTML5 验证、自定义验证逻辑和第三方库(如 Formik 和 Yup)的使用。通过具体代码示例,详细讲解了每种方法的实现步骤,并探讨了常见问题和易错点及其解决方法。旨在帮助开发者提高表单验证的有效性和安全性。
76 8
|
1月前
|
前端开发 JavaScript
手敲Webpack 5:React + TypeScript项目脚手架搭建实践
手敲Webpack 5:React + TypeScript项目脚手架搭建实践
|
28天前
|
前端开发 JavaScript API
React Native实战:构建跨平台移动应用
React Native实战:构建跨平台移动应用
27 0
|
3月前
|
移动开发 前端开发
react项目配合diff实现文件对比差异功能
在React项目中,可以使用`diff`库实现文件内容对比差异功能。首先安装`diff`库,然后在组件中引入并使用`Diff.diffChars`或`Diff.diffLines`方法比较文本差异。通过循环遍历`diff`结果,可以生成不同样式的HTML元素来高亮显示文本差异。
159 1
react项目配合diff实现文件对比差异功能
|
3月前
|
前端开发 算法 JavaScript
React项目input输入框输入自动失去焦点
本文讨论了在React项目中如何处理input输入框自动失去焦点的问题,特别是在移动端开发中。文章提供了一个使用React Native的TouchableWithoutFeedback组件来监听点击事件,并在事件处理函数中通过调用Keyboard.dismiss()方法使输入框失去焦点的示例代码。这种方法可以确保在用户点击页面其他区域时,键盘能够收起,输入框失去焦点。
121 1
React项目input输入框输入自动失去焦点
|
3月前
|
JavaScript 前端开发 应用服务中间件
本地运行打包好的React、Vue项目
本文讨论了如何本地运行打包好的React和Vue项目,并解决了使用React-Router时Tomcat部署刷新页面导致404的问题,提出了将请求转回index.html的解决方案。
38 1
本地运行打包好的React、Vue项目
|
2月前
|
前端开发 数据安全/隐私保护
前端技术实战:React Hooks 实现表单验证
【10月更文挑战第1天】前端技术实战:React Hooks 实现表单验证
|
2月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
708 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)