Redux의 예측 가능성은 다음과 같이 가장 중요한 세 가지 원칙에 의해 결정됩니다.
: 돌아 오는 세 개의 건물 부분이 행동 , 저장 및 감속기를 .
간단히 말해서 액션은 이벤트 입니다. 애플리케이션에서 Redux 스토어로 데이터를 보낼 수있는 유일한 방법입니다. 데이터는 사용자 상호 작용, API 호출과 같은 내부 이벤트 또는 양식 제출에서 발생할 수 있습니다.
{
type: "LOGIN",
payload: {
username: "Ayush",
password: "12345"
}
}
const setLoginStatus = (name, password) => {
return {
type: "LOGIN",
payload: {
username: "Ayush",
password: "12345"
}
}
}
store.dispatch(setLoginStatus(name, password));
reduce콜백 함수가 수행 된 후 여러 값에서 단일 값이 계산되는 JavaScript 의 함수를 기반으로합니다 .Redux reducer signature
(previousState, action) => nextState
Array.prototype.reduce signature
(accumulator, value) => (accumulator + value)
Example:
const handleAuth = (state = initialState, action) => {
switch (action.type) {
// This reducer handles any action with type "LOGIN"
case "LOGIN":
return state.map(user => {
if (user.username !== action.payload.username) {
return user;
}
if (user.password == action.payload.password) {
return {
...user,
login_status: "LOGGED IN"
}
}
});
default:
return state;
}
};
combineReducers()Redux에서 제공 하는 , 유틸리티를 사용할 수 있습니다 (실제로 권장 됨). 앱의 모든 감속기를 단일 인덱스 감속기로 결합합니다. 모든 리듀서는 앱 상태의 자체 부분을 담당하며 상태 매개 변수는 리듀서마다 다릅니다. 이 combineReducers()유틸리티를 사용하면 파일 구조를 훨씬 쉽게 유지 관리 할 수 있습니다.const rootReducer = combineReducers({
handleAuth: handleAuth,
editProfile: editProfile,
changePassword: changePassword
});
getState().dispatch(action).subscribe(listener).subscribe(listener).Syntax - createStore(reducer, [preloadedState], [enhancer])
Example:
import { createStore } from ‘redux’;
import rootReducer from './reducers/index';
const store = createStore(rootReducer);
store.dispatch(setLoginStatus(‘alex’, ‘123456’));
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers/index';
const store = createStore(rootReducer, applyMiddleware(thunk));
function getUser() {
return function() {
return axios.get('/get_user_details');
};
}
Syntax - ({ getState, dispatch }) => next => action
function simpleMiddleware({ getState, dispatch }) {
return function(next){
return function(action){
// processing
const nextAction = next(action);
// read the next state
const state = getState();
// return the next action or you can dispatch any other action
return nextAction;
}
}
}
const store = createStore(rootReducer , initialState=[ ] , applyMiddleware(simpleMiddleware));
createStore메서드에서 감속기 뒤에 인수로 다음을 전달해야합니다 : window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()(). 추가 store.js하면 다음과 같이 표시됩니다.import { createStore } from 'redux';
import reducer from './reducers';
const store = createStore(reducer, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());
export default store;
머리말 뇌졸중은 누구에게나 언제든지 닥칠 수 있는 의학적 응급 상황입니다. 뇌의 한 부분으로의 혈류가 중단되어 갑작스러운 뇌 기능 상실로 이어질 때 발생합니다.
이 놀라운 노코드 플랫폼의 미개발 잠재력을 활용하면서 스릴 넘치는 혁신과 성공의 여정을 시작하십시오. 뛰어난 여성 기업가인 Sapna에 대한 이야기를 들려드리겠습니다.
지역 서점과 또 다른 책을 흥정하면서 손에 가려움증이 퍼졌습니다. 내가 최근에 구입한 나머지 책과 같은 이 책은 내 'To Be Read'(TBR) 더미에서 왕좌를 찾을 것입니다. 그러나 나는 그것을 샀다.
오늘날과 같이 급변하고 경쟁이 치열한 세상에서 경력은 개인의 성장, 재정적 안정 및 전반적인 삶의 만족도에 중요한 역할을 합니다. 그러나 많은 사람들은 침체와 불만족의 끊임없는 순환에 휩싸여 직업 생활에서 점차 쇠퇴하고 있습니다.
어제 우리는 스웨덴 가수 Loreen이 트로피를 집으로 가져가서 ABBA가 대회에서 우승한 지 50년 만에 스웨덴의 왕관을 다시 가져가면서 두 번 우승한 최초의 여성이 되는 반짝반짝하고 혼란스러운 그랜드 피날레로 올해 유로비전 송 콘테스트의 문을 닫았습니다. "워털루"와 함께. 그들은 계속해서 팝 음악의 정경에서 가장 큰 행위 중 하나가 되었습니다.
페트병, 유리병, 알루미늄캔, 그린에너지 패키지를 무심코 버린 적이 몇 번이나 되셨나요? 재활용에 대한 대가로 무언가를 얻을 수 있기를 몇 번이나 바랐습니까? 당신이 대부분의 사람들과 같다면 대답은 아마도 여러 번일 것입니다. 재활용은 종종 번거로움, 자질구레한 일 또는 즉각적이거나 실질적인 혜택을 가져오지 않는 의무로 간주됩니다.