export default function New(props: any) {
const { orientation } = props
return (
<React.Fragment>
{orientation === 'horizontal' ? <HorizontalNew {...props} /> : <VerticalNew {...props} />
</React.Fragment>
)
}
New.propTypes = {
orientation: PropTypes.oneOf(['vertical', 'horizontal'])}
你好!, 我试图搜索propTypes的函数oneOf,但是在每个地方都说您可以在其中定义要验证的字符串,因此在这种提法中,我认为定向只允许“垂直”或“水平”,但将所有字符串的值,我可以从字面上使用任何字符串和作品。 那是某种错误还是我错过了什么? 谢谢!
PS1:对不起,我的英语不好
PS2:版本:道具类型:15.7.2,反应:16.9.0
答案 0 :(得分:0)
这可能是由于使用了缩小的production
版本的React,而不是development
版本。使用缩小的production
构建将禁止显示警告。要查看警告,请使用development
版本的React。
这里有两个示例,使用development
构建(有错误)和production
构建(有 否 错误)。 / p>
发展
const HorizontalNew = () => 'Horizontal'
const VerticalNew = () => 'VerticalNew'
const New = (props) => {
const { orientation } = props
return (
<div>
{orientation === 'horizontal' ?
<HorizontalNew {...props} /> :
<VerticalNew {...props} />
}
</div>
)
}
New.propTypes = {
orientation: PropTypes.oneOf(['vertical', 'horizontal'])
}
ReactDOM.render(<New orientation="diagonal"/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.development.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prop-types/15.7.2/prop-types.js"></script>
<div id="app"></div>
生产
const HorizontalNew = () => 'Horizontal'
const VerticalNew = () => 'VerticalNew'
const New = (props) => {
const { orientation } = props
return (
<div>
{orientation === 'horizontal' ?
<HorizontalNew {...props} /> :
<VerticalNew {...props} />
}
</div>
)
}
New.propTypes = {
orientation: PropTypes.oneOf(['vertical', 'horizontal'])
}
ReactDOM.render(<New orientation="diagonal"/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prop-types/15.7.2/prop-types.min.js"></script>
<div id="app"></div>