why we cannot pass boolean value as props in React , it always demands string to be passed in my code

前端 未结 3 1128
灰色年华
灰色年华 2020-12-11 00:31

Even though I have applied propType validation, my editor throws an error on when passing boolean value for the hasvacancy prop. Here is what I\'m seeing:

相关标签:
3条回答
  • 2020-12-11 00:36

    I'm updating this answer, as my original one (omitting the value) is no longer considered best practice. Now, simply wrap your value in curly braces, as you would any other Component attribute value. So, instead of this (this still works):

    render(<VacancySign hasVacancy />, document.getElementById('root'));
    

    Do this:

    render(<VacancySign hasVacancy={true} />, document.getElementById('root'));
    

    If you're using the former syntax, make sure to update your propTypes to make hasVacancy not required; otherwise, you are free to restrict it with isRequired:

    VacancySign.propTypes ={
        hasVacancy: React.PropTypes.bool.isRequired
    }
    
    0 讨论(0)
  • 2020-12-11 00:40

    To those of you who received the warning

    warning.js?6327:33 Warning: Received `true` for a non-boolean attribute `editable`
    

    This happens if you pass the props down without taking the boolean values out of the props.

    E.g.:

    const X = props => props.editable ? <input { ...props } /> : <div { ...props } />
    

    This can be circumvented by

    const X = ({ editable, ...props }) => editable ? <input { ...props } /> : <div { ...props } />
    
    0 讨论(0)
  • 2020-12-11 00:45

    You should enclose the boolean value in {}:

    render(<VacancySign hasvacancy={false}/> , document.getElementById('root'));
    
    0 讨论(0)
提交回复
热议问题