react-redux hook

piper ·2023년 12월 7일
0

useSelector():

redux의 스토어에 state 트리에서 원하는 데이터 (예를들면 state)를
가져다가 쓸 수 있게 해준다. mapStateToProps()와 비슷한 기능을 한다. selecorFunc은 항상 값은 입력값에 대해 같은 반환값을 가지는 pure function이여야 한다.

(예시)

const partialState = useSelector(selectorFunc, equalityFunc?)



const CounterComponent = () => {
  const counter = useSelector((state) => state.counter.value);
  } 

useDispatch():

const dispatch = useDispatch()

redux의 action을 dispatch 해준다. 원하는 컴포넌트에서 호출해서 쓸 수 있다는 점이 다르다.

(예시)

// src/components/CounterComponent.js

import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { increment, decrement } from '../redux/counterSlice';

const CounterComponent = () => {
  const counter = useSelector((state) => state.counter.value);
  const dispatch = useDispatch();

  const handleIncrement = () => {
    dispatch(increment());
  };

  const handleDecrement = () => {
    dispatch(decrement());
  };

  return (
    <div>
      <p>Counter: {counter}</p>
      <button onClick={handleIncrement}>Increment</button>
      <button onClick={handleDecrement}>Decrement</button>
    </div>
  );
};

export default CounterComponent;

useStore()
스토어에 직접적으로 접근해야 하는 경우에 쓸 수 있다. 하지만 직접적으로 접근해서 뭔가를 하는 것은 삼가토록 하고 state에 있는 데이터를 가져오려는 것이 목적이라면 useSelector를 사용하도록 한다.

(예시)

import {useStore} from 'react-redux';

function PrintStore(props) {
    const store = useStore();
    
    return <div>store.getState()</div>
}

export default PrintStore; 
profile
연습일지

0개의 댓글