“Invalid value for prop `dispatch` on 태그” 경고 해결하기

제목: “Invalid value for prop `dispatch` on 태그” 경고 해결하기 개요 React 컴포넌트를 사용할 때 “Invalid value for prop `dispatch` on 태그”와 같은 경고 메시지가 나타날 수 있습니다. 이 경고는 일반적으로 React Redux 라이브러리의 connect …

title_thumbnail(

제목: “Invalid value for prop `dispatch` on 태그” 경고 해결하기

개요

React 컴포넌트를 사용할 때 “Invalid value for prop `dispatch` on 태그”와 같은 경고 메시지가 나타날 수 있습니다. 이 경고는 일반적으로 React Redux 라이브러리의 connect 함수를 사용하여 컴포넌트를 스토어에 연결하려고 할 때, 디스패치할 액션이 없는 경우에 발생합니다. 이 블로그 포스트에서는 이 경고를 해결하기 위한 가능한 해결책과 액션 없이 순수 컴포넌트를 작성하는 권장사항에 대해 논의하겠습니다.

에러와 그 원인

React Redux가 컴포넌트의 props에 dispatch 함수를 주입하려고 시도했지만, dispatch 함수에 매핑할 액션 생성자를 찾을 수 없으므로 “Invalid value for prop `dispatch` on 태그”라는 에러 메시지가 발생합니다. 이는 일반적으로 mapDispatchToProps 함수나 객체를 지정하지 않고 connect 함수를 사용할 때 발생합니다.

해결책 1: Props에 디스패치 선언하기

이 경고를 해결하는 한 가지 방법은 컴포넌트의 props에 명시적으로 dispatch 함수를 선언하는 것입니다. 이를 위해 props에서 dispatch를 펼친 후 Tag 컴포넌트에 props로 전달하는 방법을 사용할 수 있습니다. 다음은 예시입니다:


const Text = ({
    tagName = 'span',
    className = '',
    children = null,
    dispatch,
    ...restProps
}) => {
    const Tag = tagName;

    return (
        <Tag {...restProps} className={className}>
            {children}
        </Tag>
    );
};

Text.defaultProps = {
    tagName: 'span',
    className: '',
    children: null,
};

export default Text;

해결책 2: 가짜 mapDispatchToProps 함수

컴포넌트에서 디스패치할 액션이 없는 경우, 다른 해결책은 connect 함수의 mapDispatchToProps 매개변수로 “no operation” 또는 “noop” 함수를 제공하는 것입니다. 이렇게 하면 dispatch 함수가 컴포넌트의 props에 주입되는 것을 방지할 수 있습니다. 다음은 예시입니다:


const mapDispatchToProps = () => {};

export default connect(mapStateToProps, mapDispatchToProps)(Text);

또는, 기본 mapDispatchToProps에 의존하는 대신 recompose의 mapProps와 같은 props 매퍼를 사용하여 필요한 props만 매핑할 수도 있습니다.

결론

“Invalid value for prop `dispatch` on 태그” 경고는 액션을 지정하지 않고 connect 함수를 사용할 때 발생할 수 있습니다. 컴포넌트의 props에 dispatch 함수를 선언하거나 가짜 mapDispatchToProps 함수를 사용하여 이 경고를 해결하고 순수 컴포넌트를 원활하게 작동시킬 수 있습니다. 특정 요구사항과 코딩 스타일에 가장 잘 맞는 해결책을 선택하세요.

참고 자료 :

https://stackoverflow.com/questions/46981270/warning-invalid-value-for-prop-dispatch-on-span-tag

같은 카테고리의 다른 글 보기 :

reactjs

Leave a Comment