const reducer = () => {}
const store = createStore(reducer)
countStore.subscribe(onChange);
const onChage = () => {
number.innerText = countStore.getState()
```
}
index.js에서 Provider을 불러온 뒤 store과 연결
import { Provider } from "react-redux";
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById("root")
);
export default connect(null, mapDispatchToProps)(Home)
function Home(){} // Home컴포넌트
//아래에서 사용
function mapStateToProps(state){
return {toDos: state}
//Home컴포넌트의 props로 store에서 가져온 state를
toDos의 key값으로 추가해준다.
}
export default connect(mapStateToProps)(Home);
함수 내에서 직접 dispatch를 하는 방법
function Home({dispatch}){
function onSubmit(e) {
dispatch(addToDo(text));
}
}
function mapDispatchToProps(dispatch){
return {dispatch}
//이제 Home컴포넌트에서 dispatch를 사용할 수 있다
}
export default connect(null, mapDispatchToProps)(Home);
참고로 addToDo는 store에서 불러온 함수
export const addToDo = (text) => {
return {
type: ADD,
text,
};
};
dispatch를 mapDispatchToProps내에서 하며 dispatch를 하는 함수를 제공해준다. 해서 Home컴포넌트에서 props로 dispatch를 하는 함수를 전달해줘서 그 함수를 이용해 dispatch한다.
function Home({addToDo}){
function onSubmit(e) {
addToDo(text);
}
}
function mapDispatchToProps(dispatch){
return {
addToDo: (text) => dispatch(actionCreators.addToDo(text)),
};
}
export default connect(null, mapDispatchToProps)(Home);
위와 같은 방법은 불편하기 때문에 hooks의 useSelector, useDispatch 방법이 더욱 간편하다.
obj?.prop
obj?.[expr]
arr?.[index]
func?.(args)
const Detail = ({ todos }) => {
return (
<>
<h1>{todos?.text}</h1>
<h3>{todos?.id}</h3>
</>
);
};
참고 : 노마드코더 redux 강의