我有一个组件<Button>
。
如果组件没有this.props.children
,我想将prop设置ariaLabel
为isRequired
,否则in可以是可选的。我怎么做?
ariaLabel
不需要道具:
<Button>Add to bag</Button>
ariaLabel
需要道具:
<Button ariaLabel="Add to bag" icon={ favorite } />
如果this.props.children
和this.props.ariaLabel
为空,则抛出错误,说this.props.ariaLabel
是isRequired
<Button icon={ favorite } />
propTypes:
Button.propTypes = {
/** icon inside Button. */
icon: React.PropTypes.object,
/** Content inside button */
children: React.PropTypes.node,
/** Aria-label to screen readers */
ariaLabel: React.PropTypes.string, /*isRequired if children is empty */
};
谢谢
您不需要其他库,“ prop-
types”提供了现成的功能。参见https://facebook.github.io/react/docs/typechecking-with-
proptypes.html
例:
import PropTypes from 'prop-types';
//.......
ExampleComponent.propTypes = {
showDelete: PropTypes.bool,
handleDelete: function(props, propName, componentName) {
if ((props['showDelete'] == true && (props[propName] == undefined || typeof(props[propName]) != 'function'))) {
return new Error('Please provide a handleDelete function!');
}
},
}
如果属性不是,则任务是使用值覆盖任何属性值。如果您关心,这背后的业务逻辑是一个APIendpoint,它修改,并将作为参数(但可以更改所有或任何属性,因此我们不希望用null覆盖有效的旧值)。解决这个问题的方法是这样的。 我被告知这是多余的(我同意)。解决方案伪代码如下所示: 当然,这不是JavaScript,所以没那么容易。我的反射解决方案在下面,但imo,有冗余比在这里做反射更好。我有什么其他
在本页React Native State on React Native docs中,我们有以下语句: 道具由父级设置,并且在组件的整个生存期内都是固定的。 但是,在本页React文档上的React State and Lifecycle中,我们有以下声明: 因为this.props和this.state可能是异步更新的,所以不应该依赖它们的值来计算下一个状态。 我的误解在哪里?对我来说,当组件
我有一个组件,根据其大小接收道具。道具可以是字符串或数字,例如:或。 我能让知道这可以是PropTypes验证中的一个或另一个吗? 如果未指定类型,则会收到警告: prop type无效;它必须是一个函数,通常来自React。道具类型。
问题内容: React建议转移道具。整齐! 我如何转移除一个以外的所有东西? 问题答案: 您可以使用以下技术来消耗一些道具并传递其余的道具: 资源
悬而未决...
我试图通过反应路由器将道具从一个组件传递到另一个组件。当我试图从子组件获取道具时,我得到了这样一条消息。这是我的代码: Tracks.jsx: app.jsx: Album.jsx: