반응과 각도에서 함수 프로그래밍
13072 단어 reactangularjavascriptfunctional
프레임 및 라이브러리
ReactJS와 AngularJS(여기서는 AngularJS와 VueJS를 포함하지 않음)는 구글의 최신 트렌드 중 가장 유행하는 라이브러리와 프레임워크입니다.
ReactJS 및 Angular POV의 함수 프로그래밍:
함수식 프로그래밍은 결코 새로운 일이 아니지만 최근에 점점 유행하고 있다. 왜냐하면 이것은 시장에서 두 가지 주류 프레임워크의 핵심이기 때문이다.
면책 성명: 이것은 단지 이 두 도구 중 가장 뚜렷한 함수 프로그래밍의 영향에 대한 간단한 관점일 뿐이다.만약 우리가 계속 깊이 파고든다면, 틀림없이 더 많은 함수식 프로그래밍 방법이 있을 것이다. 우리는 단지 표면에 닿을 뿐이다.
먼저 Redux 원칙이 무엇인지 살펴보겠습니다.
세 가지 원칙
Redux는 다음 세 가지 기본 원칙으로 설명할 수 있습니다.
전체 응용 프로그램의 상태는 단일 저장소의 대상 트리에 저장됩니다.
상태를 바꾸는 유일한 방법은 어떤 일이 일어났는지 설명하는 동작을 내는 것이다.
상태 트리가 조작을 통해 어떻게 변환되는지 지정하기 위해서 우리는 순약간을 작성했다.
https://redux.js.org/introduction/three-principles
반응:
useState(currentState: {}, newState: {}) )
'상태 없음'구성 요소는 보기에 매우 순수한 함수처럼 보이지만, 사실은 확실히 이렇다.따라서 우리가 보듯이 React는 대상을 대상으로 하는 실천보다 기능을 위한 실천을 추진*2
<input onChange(props: changed) value(props.name) />
// class component
class MyComponent extends Component {
state = {};
render() { // pure function
const { contact } = this.props;
return (
<div className="card card-body mb-3" >
<ul className="list-group">
<li className="list-group-item">{contact.email}</li>
<li className="list-group-item">{contact.location}</li>
</ul>
</div>
)
}
}
static getDerivedStateFromProps(props, state)
파생 상태는 지루한 코드를 초래하여 구성 요소를 생각하기 어렵게 하고 기능 대체 방안을 제시합니다.- 도구 변경에 응답하기 위해 부작용 (예: 데이터 가져오기 또는 애니메이션) 을 수행하려면 componentDidUpdate 라이프 사이클을 사용하십시오.
- 도구가 변경될 때만 일부 데이터를 다시 계산하려면 메모리 조수를 사용하십시오.
React is pretty flexible but it has a single strict rule:
All React components must act like pure functions with respect to their props.
각도:
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
changeDetection: ChangeDetectionStrategy.OnPush // OnPush strategy
})
export class AppComponent {
constructor(){}
}
React처럼 우리도 페이스북의 불변성을 이용하여 불변성의 개념을 다시 실시할 수 있다.JS, "const"성명은 재분배를 방지할 수 있지만 돌변을 방지할 수 없다는 것을 기억하자.순수한 파이프는 순수한 함수와 유사합니다. 같은 매개 변수 집합을 사용하면 같은 출력을 생성합니다.이러한 파이프에는 참조 투명도 속성이 있습니다.
import { from } from './rxjs';
import { map } from './rxjs';
const fooValues = [{ n:1, n:2, n:3}]
from(fooValues)
.pipe(map(({n}) => n)) // data-pipeline
.subscribe(x => console.log(x));
작은 응용 프로그램에서 Redux의 형식주의는 좀 지나쳤을 수도 있다.그러나 우리가 부작용을 겪고 디버깅이 일반적인 임무가 되기 시작했을 때, Redux는 정말 훌륭했다.
이를 실현하기 위해 불변성을 사용했다.Redux는 응용 프로그램 상태를 간단한 대상으로 구성하고 새 상태로 바꾸어 읽기 전용 상태를 업데이트합니다.
*0 react-redux.js.org
*1 Redux (@ngrx/store) best practices
*2 So What About Inheritance?
*3 Facebook immutable-js
결론
함수식 프로그래밍은 중요한 학습 추세가 되었다. 이것은 충분한 이유가 있다. 이것은 가장 유행하는 프레임워크의 본질과 구성 요소의 생명 주기에 의존한다.어플리케이션이 엔터프라이즈급으로 업그레이드되기 시작하면 이 점이 더욱 뚜렷해지고, 상호 통신과 상호작용의 구성 요소의 복잡성과 수량은 같은 업데이트와 유일한 데이터에 의존하여 원격 동급 통신을 해야 한다.
진일보한 정보
* Google Trends source
* Faster Angular Applications - Part 2. Pure Pipes, Pure Functions and Memoization
[다음] 함수 프로그래밍 관련 이야기:
감사합니다.
{“Leo Lanese”,
"인심을 격려하는 반응식 솔루션 구축"
"영국 런던".
폴더
http://www.leolanese.com
트위터:
질문/건의/건의?
[email protected]
개발 목표:
블로그:
leolanese.com/blog
Reference
이 문제에 관하여(반응과 각도에서 함수 프로그래밍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/leolanese/functional-programming-from-the-reactjs-and-angular-point-of-view-21f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)