Redux 사용법을 배우고 있습니다. 단 하나의 버튼으로 간단한 애플리케이션을 만들고 싶습니다. 버튼을 클릭하면 나머지 API 호출을 원하고 응답이 돌아 오면 응답 내용을 표시해야합니다.react + redux로 전화 해주세요
사용자가 버튼을 클릭하면 store.dispatch(CardAction.GET_CARDS)
메시지를 Redux로 보냅니다. 버튼의 onClick 핸들러에서 직접 나머지 api를 호출하고 싶지는 않습니다.
답변을 받으려면 store.dispatch(CardAction.UPDATE_UI)
과 함께 이벤트를 보내고 어떻게 든 백그라운드에서 Redux의 상태를 업데이트하고 싶습니다.
이 개념이 React + Redux와 맞기를 희망합니다.
일부 JavaScript 코드가 완료되었지만 일부 코드가 누락되었습니다. 부품을 모으는 것을 도와 주시겠습니까?
index.jsp를
<!DOCTYPE html>
<%@page session="false"%>
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head>
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=UTF-8">
<base href="${pageContext.request.contextPath}/" />
<link rel="icon" type="image/x-icon" href="public/image/favicon.ico">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/latest/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/latest/css/bootstrap-theme.min.css">
</head>
<body>
<div id="root"></div>
<script type="text/javascript" src="bundle.js"></script>
</body>
</html>
App.js
let store = createStore(reducers);
ReactDom.render(
<Provider store={store}>
<Card/>
</Provider>,
document.getElementById('root')
);
Card.js
export default class Card extends React.Component {
render() {
return (
<div>
...
<Button onClick={() => store.dispatch(CardAction.GET_CARDS)}>rest call</Button>
</div>
)
}
}
ActionType.js
export const GET_CARDS = 'get-cards';
export const UPDATE_UI = 'update-ui';
CardAction.js
export function getCards(param1, param2) {
return createAction(ActionType.GET_CARDS, (param1, param2) => ({ value1, value2 }))
}
export function updateUi() {
return createAction(ActionType.UPDATE_UI)
}
RootReducer.js
export const reducers = (state = {}, action) => {
return action
};
RestClient.js
,export default {
cardPost(param1, param2) {
const url = ...;
fetch(url, {
method: 'POST',
credentials: 'include'
})
.then(response => {
if (response.ok) {
console.info('rest response have arrived');
store.dispatch(CardAction.UPDATE_UI)
} else {
console.info('error appeared during calling rest api');
//store.dispatch(CardAction.SHOW_ERROR)
}
})
.catch(function(err) {
console.info(err + ' Url: ' + url)
})
}
}
는 "createAction는"당신의 사용자 정의 함수 할 거라고? –
그것은 'redux-actions'의 import {createAction}에서 가져옵니다. – zappee