본문으로 바로가기

 

 

이번 글에서는 Failed prop type: Invalid prop `name` of type `number` supplied to `Component명`, expected `string`. 에러 해결 방법에 대하여 알아보겠습니다.

 

Failed prop type: Invalid prop `name` of type `number` supplied to `Component명`, expected `string`.

 

 

[에러가 발생한 코드]

App.js

import React from 'react';
import TestComponent from './TestComponent';

const App = () => {
  return <TestComponent name={119}>리액트</TestComponent>
}

export default App;

 

TestComponent.js

import React from 'react';
import PropTypes from 'prop-types';

const TestComponent = props => {
    const { name, children } = props;
    return (
        <div>
            안녕하세요. 제 이름은 {name} 입니다. <br/>
            children 값은 {children} 입니다.
        </div>
    )
}

TestComponent.propTypes = {
    name: PropTypes.string
}

export default TestComponent;

 

 

[에러 원인]

값이 나타나기는 했지만 콘솔에 경고 메시지를 출력하여 propTypes가 잘못되었다는 것을 알려주고 있습니다. 에러가 발생한 이유는 컴포넌트에 설정한 props가 propTypes에서 지정한 형태와 일치하지 않아서 입니다.

 

 

[해결 방법]

1. props를 propTypes에서 지정한 타입과 일치시켜 줍니다.

App.js

import React from 'react';
import TestComponent from './TestComponent';

const App = () => {
  return <TestComponent name={"119"}>리액트</TestComponent>
}

export default App;

 

2. propTypes를 props에 지정한 타입과 일치시켜 줍니다.

TestComponent.js

import React from 'react';
import PropTypes from 'prop-types';

const TestComponent = props => {
    const { name, children } = props;
    return (
        <div>
            안녕하세요. 제 이름은 {name} 입니다. <br/>
            children 값은 {children} 입니다.
        </div>
    )
}

TestComponent.propTypes = {
    name: PropTypes.number
}

export default TestComponent;