PropType对调试很有帮助,因为当期望未得到满足时,它们会显示警告。除此之外,它们还很好地表达了组件应该如何使用的意图。
如果我有一个组件,它接受一个可能是promise的值的prop,是否有某种方法可以使用PropType来表达?我想象的要么是像PropTypes.promise
这样的直接的东西,要么是使用构建块PropType来表达“thable”概念的某种方式。
下面是一个高度简化的示例,展示了我的预期用例:
class SomeComponent extends Component {
static propTypes = {
someDataPromise: PropTypes.object // <-- can I be more expressive here?
}
state = {
isLoading: false
}
async handleSubmit() {
this.setState({ isLoading: true });
const data = await this.props.someDataPromise;
const response = await fetch(`/some/api/endpoint?data=${data}`);
// do something with the response
this.setState({ isLoading: false });
}
render() { /* ... */ }
}
我认为你不应该这样想。React只是一个高级模板引擎,这意味着您拥有数据的“状态”和表示该状态的视图。使用promise作为属性意味着您有一个未定义的状态,这在视图组件方面很难表示。这是编程的主要问题,您可以做任何您想做的事情,但是当您使用框架时,您应该遵循框架的理念。
长话短说,不要把promise当作财产。在将属性传递给视图组件之前,请确保处于有效的确定状态。也许像redux这样的带有thunk或redux观测值的全局状态将帮助您处理异步信息。
另一种表达道具promise的方式是使用PropTypes。instanceOf()
。重要提示:这仅在您的promise是Promise类的实例时有效:
static propTypes = {
someDataPromise: PropTypes.instanceOf(Promise)
}
您可以使用具有特定形状的对象,例如。
PropTypes.shape({
then: PropTypes.func.isRequired,
catch: PropTypes.func.isRequired
})
我有一个组件,根据其大小接收道具。道具可以是字符串或数字,例如:或。 我能让知道这可以是PropTypes验证中的一个或另一个吗? 如果未指定类型,则会收到警告: prop type无效;它必须是一个函数,通常来自React。道具类型。
情况: 我想做的事: 问题: 我只能指定一个propType?我如何允许两种不同的道具组合成一种? 谢谢
我有以下组件,它主要依赖于react native的 我能够输入注释我自己的道具,但在上面的例子中抛出了一个错误 [flow]属性<代码>样式(在道具中找不到属性)常量样式:任意 我知道在typescript中,我可以将接口扩展到Image one,流程中是否有一些东西可以让我的道具以某种方式从继承所有类型?我如何从react native导入这些类型? 编辑我发现了一个叫做交叉点类型的概念,并尝
本文向大家介绍react-native 道具类型,包括了react-native 道具类型的使用技巧和注意事项,需要的朋友参考一下 示例 该prop-types包允许您向组件添加运行时类型检查,以确保传递给组件的道具类型正确。例如,如果不将aname或isYummyprop传递给下面的组件,它将在开发模式下引发错误。在生产模式下,不进行道具类型检查。定义propTypes可以使您的组件更具可读性和
我得到警告,因为警告:失败的道具类型:组件:道具类型是无效的;它必须是一个函数,通常来自包,但收到了 我的代码是: 我的功能运行正常,但出现此控制台错误是否有人可以帮助我解决此警告?
我在react native中引入了用于搜索的Texinput。代码如下: 和: 每当我在输入文本后运行Android时,我都会看到这个警告: 警告失败属性类型为TextInput提供的“object”类型的无效属性“value”,应为“string”