이번 글은 주로 리액트 프로젝트를 개발할 때 주의해야 할 사항에 대해 이야기하고 있습니다. 알고 싶다면 지금 바로 이 글을 클릭해서 읽어보세요
对react项目开发,我大概对它的知识点进行了分类,主要由以下几个部分组成。
기본 작성 방법
접속 페이지 작성 방법
import React,{ Component } from 'react';import { render } from 'react-dom';import Main from './components/Main'; render(<Main />,document.getElementById('app'));
컴포넌트 작성 방법
import React,{ Component } from 'react'; export default class Main extends Component{ render(){ return ( <p> 组件 </p> ) } }
값 전달 컴포넌트
부모 컴포넌트에서 자식 컴포넌트로
父组件传给子组件靠props
import React,{ Component } from 'react'; import { render } from 'react-dom';class Main extends Component{ render(){ return ( <p> <Child title="我是父组件"/> </p> ) } }class Child extends Component{ render(){ return( <h2 id="this-props-title">{this.props.title}</h2> ) } } render(<Main />,document.getElementById('app'));
자식 컴포넌트에서 부모 컴포넌트로
子组件传给父组件靠事件 子组件传递给父组件的过程描述,父组件传递给子组件一个函数,子组件执行这个函数,然后把子组件自己的值可以通过穿参的方式传递进去。然后父组件接受到这个值,进行相应的操作。
import React,{ Component } from 'react'; import { render } from 'react-dom';class Main extends Component{ constructor(props){ super(props); this.state = { value:'init value' } } render(){ return ( <p> <p>{this.state.value}</p> <Child onClick={(value)=>{this.setState({value:value})}}/> </p> ) } }class Child extends Component{ render(){ return( <button onClick={()=>this.props.onClick("子组件的值")}>点击传值</button> ) } } render(<Main />,document.getElementById('app'));
webpack
으아악일반적인 웹팩 구성 파일은 다음과 같습니다.
webpack的配置一般分为这么几个部分,entry、output、plugin、devServer、module等。 entry告诉webpack入口在哪。 output告诉webpack将来把文件打包到哪。 plugin代表一些其他的操作,如打开浏览器、文件压缩等处理。 devServer代表开发的时候启动一个本地服务器 module代表各种loader用来解析你的代码。
es6 부분
React에서는 일반적으로 몇 가지 es6 구문을 알아야 합니다. React를 위해 es6의 몇 가지 기본 사용법과 작성 방법이 나열되어 있습니다.
가져오기 및 내보내기
import에 새로운 기능이 추가되었습니다
var webpack = require('webpack');module.exports = { entry:"./src/index.js", output:{ path:'public', filename:'bundle.js' }, devServer:{ historyApiFallback:true, hot:true, inline:true }, plugins:[ new webpack.DefinePlugin({ 'process.env.NODE.ENV': "development" }), new webpack.HotModuleReplacementPlugin(), new OpenBrowserPlugin({ url: 'http://localhost:8080' }) ], module:{ loaders:[{ test:/\.js[x]?$/, exclude:/node_modules/, loader:'babel-loader', query:{ presets:['es2015','react','stage-1'] } },{ test:/\.css$/, loaders:['style',css] },{ test:/\.(png|jpg)$/, loader:"url-loader" }] } }
"{}"를 사용하여 도입된 변수는 해당 파일에 반드시 존재해야 하는 동일한 이름을 가진 변수입니다.
"{}" 없이 도입된 변수는 해당 파일에서 기본 내보내기에 의해 던져진 변수이며, 변수 이름은 다를 수 있습니다.
내보내기가 뭔가를 던집니다.
import webpack from 'webpack';import React from 'react';import { Component } from 'react';
내보내기는 여러 번 던져서 여러 번 사용할 수 있습니다.
내보내기 기본값은 하나만 사용할 수 있으며 이는 기본적으로 발생함을 의미합니다.
class 및 확장
클래스의 본질은 클래스를 선언하는 키워드입니다. 존재 의미는 var, let, const, function 등과 같습니다.
사용 방법:
function a(){ console.log(1); }let b = 1;export a;export b;export default a;
extends는 상속을 나타내고, 사용 방법:
class Main{}
constructor는 생성자를 나타내고, super는 상위 클래스의 속성과 메서드를 상속합니다.
class Main extends Component{}
라이프사이클 기능
기본 라이프사이클 기능
3가지 상태로 구분
Mounting
Updating
Unmounting
-
마운팅 단계 – 일반적으로 이 단계의 수명 주기 기능 단계는 한 번만 실행됩니다.
constructor()
comComponentWillMount()
comComponentDidMount()
render() -
업데이트 단계 – 여러 번 실행됩니다.
comComponentWillReceiveProps()
shouldComponentUpdate()
render()
comComponentD 아이디업데이트() -
Unmountint 단계 – 컴포넌트 언마운트 기간
comComponentWillUnmount()
이 단계의 컴포넌트 수명주기 기능입니다. 이전에는 getDefaultProps 및 getInitialState라는 두 가지 수명 주기 함수가 있었습니다.
그러나 해당 기능은 이제 생성자로 대체되었습니다.
컴포넌트의 수명주기 사용 시나리오
-
constructor
이를 사용하는 일반적인 방법은 상태class Main extends Component{ constructor(props){ super(props) } }
comComponentWillMount
일부 초기화 작업을 수행하는 것입니다. 아니면 데이터 로딩을 해보세요.
<br>componentWillMount(){ <br> this.fetchData(); <br>} <br>
-
componentDidMount
常见场景就是数据请求constructor(props){ super(props); this.state = { value:'' }}
-
render
一个react组件中必须包含的函数,返回jsx语法的dom元素componentWillMount(){ this.fetchData(); }
componentWillReceiveProps
在props传递的时候,可以在render之前进行一些处理。不会触发二次setState。
只有一个参数。代表的是props对象shouldComponentUpdate
有两个参数,分别代表props和state
必须返回一个true或者false。否则会语法报错。
在进行一些性能优化的时候非常有用componentDidUpdate
组件加载完毕,进行某些操作-
componentWillUnmount
this.fetchData();
最常见的场景,对组件附加的setInterval、setTimeout进行清除。<br>componentWillUnMount(){ <br> clearInterval(this.timer); <br>} <br>
comComponentWillMount(){ }
일반적인 시나리오는 데이터 요청
render(){ return ( <p>123</p> ) }
render
반응 구성 요소에 포함되어야 하며 jsx 구문의 dom 요소를 반환하는 함수입니다.常见的使用场景是,根据传递不同的props,渲染不同的界面数据。 项目比较复杂的情况下,一个页面的值发生变化,就要导致另一个页面的值发生改变,这样需要通过props的方式来告知对方,你的值发生改变。让另外一个组件更新dom。需要使用这个周期函数进行监听接受到的props,从而根据这个props进行相应的数据处理。
comComponentWillReceiveProps
props가 전달되면 렌더링 전에 일부 처리가 수행될 수 있습니다. SetState는 두 번 트리거되지 않습니다.
매개변수는 하나뿐입니다. props 객체를 나타냅니다
shouldComponentUpdate
props와 state를 각각 나타내는 두 개의 매개변수가 있습니다
true 또는 false를 반환해야 합니다. 그렇지 않으면 구문 오류가 보고됩니다.
성능 최적화를 수행할 때 매우 유용합니다
comComponentDidUpdate
구성 요소가 로드되고 일부 작업이 수행됩니다 comComponentWillUnmount가장 일반적인 시나리오는 구성 요소에 연결된 setInterval 및 setTimeout을 지우는 것입니다.
comComponentWillUnMount(){
clearInterval(this.timer);}
comComponentWillReceiveProps parsing这个函数的返回值是一个布尔值。返回一个true。
返回一个false的情况下,它的的状态不会进行更新。
shouldComponentUpdate parsingimmutable.js
성능 최적화 부분const Promise = require(`../vendor/bluebird/bluebird.js`);let get = (url,data) => { return new Promise((resolve, reject) => { if(res){
resolve(res);
}else if(err){
reject(err);
}
})}
데이터 요청 부분ajax 전통적인 것을 사용하다 XMLHttpRequest 객체는 데이터 요청을 수행합니다. var xhr = new XMLHttpRequest();
xhr.open(type, url, true)xhr.onReadyStateChange = ()=>{
if (xhr.readyState == 4 && xhr.status == 200) { 성공(xhr.responseText); }
}promisepromise는 es6에서 제안하는 데이터 요청 방식입니다. 현재 많은 브라우저에서는 아직 이를 구현하지 않았습니다. 하지만 blueBird.js와 같은 promise에 대한 폴리필이 있습니다.기본 사용법은 다음과 같습니다: Promise object
fetch("http://homework.shsoapp.com:80/ttzyservice/task/getTaskSubjectList",{ method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, mode: 'cors', body: "page=1&rows=10" }).then(res =>{ console.log(res); return res.json() }).then(res => { console.log(res); })🎜fetch🎜🎜fetch의 기본 사용법: 🎜
import { BrowserRouter as Router, Link, Route,Switch} from 'react-router-dom'; export default class Main extends Component{ render(){ return( <Router> <p> <Switch> <Route path='/' component={page1}> <Route path='/home' component={page2}> <Route path='/age' component={page3}> </Switch> </p> </Router> ) } }🎜react Routing🎜🎜기본 사용법🎜
const ADD_TASK = "ADD_TASK";const ADD_CONTENT = "ADD_CONTENT"; export function addtask(task){ return { type: ADD_TASK, task } } export function addContent(content){ return { type: ADD_CONTENT, content } }🎜redux는 간단하고 실용적입니다🎜 🎜작업 🎜
import { addtask,addContent } from 'actions';export function(state = '',action){ switch (action.type){ case ADD_TASK: return action.task; break; case ADD_CONTENT: return action.content; break; default: return state; } }🎜reducers🎜
对react项目开发,我大概对它的知识点进行了分类,主要由以下几个部分组成。🎜 > es6의 기본 사용법과 작성 방법은 여기에 나열되어 있습니다. 🎜🎜가져오기 및 내보내기🎜🎜가져오기는 뭔가를 소개합니다🎜
import webpack from 'webpack';import React from 'react';import { Component } from 'react';
其中使用“{}”引入的变量是那个文件中必须存在的变量名相同的变量。
不使用“{}”引入的变量是那个文件中export default默认抛出的变量,其中变量名可以不一样。
export抛出一个东西。
function a(){ console.log(1); }let b = 1;export a;export b;export default a;
其中export可以抛出多个,多次使用。
export default只能使用一个,表示默认抛出。
class和extends
class的本质是一个申明类的关键字。它存在的意义和var、let、const、function等都是一样的。
使用方式:
class Main{}
extends代表继承,使用方式:
class Main extends Component{}
constructor代表构造函数,super是从父类继承属性和方法。
class Main extends Component{ constructor(props){ super(props) } }
生命周期函数
基本生命周期函数
分三个状态
Mounting
Updating
Unmounting
Mounting阶段–一般在这个阶段生命周期函数只会执行一次
constructor()
componentWillMount()
componentDidMount()
render()Updating阶段–会执行多次
componentWillReceiveProps()
shouldComponentUpdate()
render()
componentDidUpdate()Unmountint阶段–组件卸载期
componentWillUnmount()
这就是现阶段的组件生命周期函数。之前还有两个生命周期函数叫 getDefaultProps 以及 getInitialState。
但是它们的功能现在被constructor代替。
组件的生命周期使用场景
-
constructor
常见的一个使用方式就是state的初始化constructor(props){ super(props); this.state = { value:'' }}
componentWillMount
进行一些初始化的操作。或者进行一些数据加载。<br>componentWillMount(){ <br> this.fetchData(); <br>} <br>
-
componentDidMount
常见场景就是数据请求componentWillMount(){ this.fetchData(); }
-
render
一个react组件中必须包含的函数,返回jsx语法的dom元素render(){ return ( <p>123</p> ) }
componentWillReceiveProps
在props传递的时候,可以在render之前进行一些处理。不会触发二次setState。
只有一个参数。代表的是props对象shouldComponentUpdate
有两个参数,分别代表props和state
必须返回一个true或者false。否则会语法报错。
在进行一些性能优化的时候非常有用componentDidUpdate
组件加载完毕,进行某些操作componentWillUnmount
最常见的场景,对组件附加的setInterval、setTimeout进行清除。<br>componentWillUnMount(){ <br> clearInterval(this.timer); <br>} <br>
componentWillReceiveProps解析
常见的使用场景是,根据传递不同的props,渲染不同的界面数据。 项目比较复杂的情况下,一个页面的值发生变化,就要导致另一个页面的值发生改变,这样需要通过props的方式来告知对方,你的值发生改变。让另外一个组件更新dom。需要使用这个周期函数进行监听接受到的props,从而根据这个props进行相应的数据处理。
shouldComponentUpdate解析
这个函数的返回值是一个布尔值。返回一个true。 返回一个false的情况下,它的的状态不会进行更新。
性能优化部分
immutable.js
数据请求部分
ajax
在react中,可以使用传统的XMLHttpRequest对象进行数据请求。
var xhr = new XMLHttpRequest();
xhr.open(type, url, true);
xhr.onReadyStateChange = ()=>{
if (xhr.readyState == 4 && xhr.status == 200) {
sucess(xhr.responseText);
}
}
promise
promise是es6提出的数据请求方式。目前很多浏览器还没有实现。但是有promise的polyfill,如blueBird.js
基本的使用方式是:Promise对象
const Promise = require(`../vendor/bluebird/bluebird.js`);let get = (url,data) => { return new Promise((resolve, reject) => { if(res){ resolve(res); }else if(err){ reject(err); } })}
fetch
fetch的基本使用方式:
fetch("http://homework.shsoapp.com:80/ttzyservice/task/getTaskSubjectList",{ method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, mode: 'cors', body: "page=1&rows=10" }).then(res =>{ console.log(res); return res.json() }).then(res => { console.log(res); })
react 路由
基本使用
import { BrowserRouter as Router, Link, Route,Switch} from 'react-router-dom'; export default class Main extends Component{ render(){ return( <Router> <p> <Switch> <Route path='/' component={page1}> <Route path='/home' component={page2}> <Route path='/age' component={page3}> </Switch> </p> </Router> ) } }
redux的简单实用
actions
const ADD_TASK = "ADD_TASK";const ADD_CONTENT = "ADD_CONTENT"; export function addtask(task){ return { type: ADD_TASK, task } } export function addContent(content){ return { type: ADD_CONTENT, content } }
reducers
import { addtask,addContent } from 'actions';export function(state = '',action){ switch (action.type){ case ADD_TASK: return action.task; break; case ADD_CONTENT: return action.content; break; default: return state; } }
위 내용은 React 프로젝트 개발에 대해 무엇을 알아야 합니까? React 프로젝트 개발에 관한 구체적인 사항(예시 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

JavaScript는 웹 페이지의 상호 작용과 역학을 향상시키기 때문에 현대 웹 사이트의 핵심입니다. 1) 페이지를 새로 고치지 않고 콘텐츠를 변경할 수 있습니다. 2) Domapi를 통해 웹 페이지 조작, 3) 애니메이션 및 드래그 앤 드롭과 같은 복잡한 대화식 효과를 지원합니다. 4) 성능 및 모범 사례를 최적화하여 사용자 경험을 향상시킵니다.

C 및 JavaScript는 WebAssembly를 통한 상호 운용성을 달성합니다. 1) C 코드는 WebAssembly 모듈로 컴파일되어 컴퓨팅 전력을 향상시키기 위해 JavaScript 환경에 도입됩니다. 2) 게임 개발에서 C는 물리 엔진 및 그래픽 렌더링을 처리하며 JavaScript는 게임 로직 및 사용자 인터페이스를 담당합니다.

JavaScript는 웹 사이트, 모바일 응용 프로그램, 데스크탑 응용 프로그램 및 서버 측 프로그래밍에서 널리 사용됩니다. 1) 웹 사이트 개발에서 JavaScript는 HTML 및 CSS와 함께 DOM을 운영하여 동적 효과를 달성하고 jQuery 및 React와 같은 프레임 워크를 지원합니다. 2) 반응 및 이온 성을 통해 JavaScript는 크로스 플랫폼 모바일 애플리케이션을 개발하는 데 사용됩니다. 3) 전자 프레임 워크를 사용하면 JavaScript가 데스크탑 애플리케이션을 구축 할 수 있습니다. 4) node.js는 JavaScript가 서버 측에서 실행되도록하고 동시 요청이 높은 높은 요청을 지원합니다.

Python은 데이터 과학 및 자동화에 더 적합한 반면 JavaScript는 프론트 엔드 및 풀 스택 개발에 더 적합합니다. 1. Python은 데이터 처리 및 모델링을 위해 Numpy 및 Pandas와 같은 라이브러리를 사용하여 데이터 과학 및 기계 학습에서 잘 수행됩니다. 2. 파이썬은 간결하고 자동화 및 스크립팅이 효율적입니다. 3. JavaScript는 프론트 엔드 개발에 없어서는 안될 것이며 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축하는 데 사용됩니다. 4. JavaScript는 Node.js를 통해 백엔드 개발에 역할을하며 전체 스택 개발을 지원합니다.

C와 C는 주로 통역사와 JIT 컴파일러를 구현하는 데 사용되는 JavaScript 엔진에서 중요한 역할을합니다. 1) C는 JavaScript 소스 코드를 구문 분석하고 추상 구문 트리를 생성하는 데 사용됩니다. 2) C는 바이트 코드 생성 및 실행을 담당합니다. 3) C는 JIT 컴파일러를 구현하고 런타임에 핫스팟 코드를 최적화하고 컴파일하며 JavaScript의 실행 효율을 크게 향상시킵니다.

실제 세계에서 JavaScript의 응용 프로그램에는 프론트 엔드 및 백엔드 개발이 포함됩니다. 1) DOM 운영 및 이벤트 처리와 관련된 TODO 목록 응용 프로그램을 구축하여 프론트 엔드 애플리케이션을 표시합니다. 2) Node.js를 통해 RESTFULAPI를 구축하고 Express를 통해 백엔드 응용 프로그램을 시연하십시오.

웹 개발에서 JavaScript의 주요 용도에는 클라이언트 상호 작용, 양식 검증 및 비동기 통신이 포함됩니다. 1) DOM 운영을 통한 동적 컨텐츠 업데이트 및 사용자 상호 작용; 2) 사용자가 사용자 경험을 향상시키기 위해 데이터를 제출하기 전에 클라이언트 확인이 수행됩니다. 3) 서버와의 진실한 통신은 Ajax 기술을 통해 달성됩니다.

보다 효율적인 코드를 작성하고 성능 병목 현상 및 최적화 전략을 이해하는 데 도움이되기 때문에 JavaScript 엔진이 내부적으로 작동하는 방식을 이해하는 것은 개발자에게 중요합니다. 1) 엔진의 워크 플로에는 구문 분석, 컴파일 및 실행; 2) 실행 프로세스 중에 엔진은 인라인 캐시 및 숨겨진 클래스와 같은 동적 최적화를 수행합니다. 3) 모범 사례에는 글로벌 변수를 피하고 루프 최적화, Const 및 Lets 사용 및 과도한 폐쇄 사용을 피하는 것이 포함됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
