reactjs - React 隐式映射机制
问题描述
我正在阅读教程:
https://www.robinwieruch.de/gentle-introduction-higher-order-components/
他们有这样的陈述:
const withTodosNull = (Component) => (props) =>
!props.todos
? null
: <Component { ...props } />
据我了解Component
,它被传递给函数,然后它props
被隐式地获取并馈送到返回函数中。我不明白这React
是怎么做到的。老实说,我会期待类似的东西(Component) => (Component.props)
。这是什么机制?props
仅当我们提供参数 as或我们可以提供任何名称时,它是否正确映射?这种隐式分配是否有特定名称?
更新
也许我不够清楚,但我真正感兴趣的是,props
如果它们没有传递给前一个外部函数,它们从哪里出现在内部函数中。我了解 HOC 是如何工作的,如何思考它们,但是现在还不清楚,这是什么在React
做呢?有没有engine
在幕后奔波,idk...
解决方案
如果我们使用 classic 重写箭头函数可能会更容易理解function()
:
function withTodosNull(Component) {
return function(props) {
if (!props.todos) {
return null;
}
return <Component {...props} />;
}
}
内部未命名函数是一个函数组件。它接受属性并呈现为null
或 as Component
。
外部函数称为高阶组件(HoC)。它是一个函数,它包装一个组件并返回一个新组件。
Component
和之间没有联系props
。它们只是两个不同函数的参数。
具体来说,当您致电时:
class MyComponent: React.Component {
}
const myComponentWithTodosNull = withTodosNull(MyComponent);
它与写作相同:
const myComponentWithTodosNull = props => {
if (!props.todos) {
return null;
}
return <MyComponent {...props} />;
}
推荐阅读
- apache-kafka - 生产者和消费者的 Kafka Metrics 导出器
- r - 更改 ggcompetingrisks 中的图例标签
- powerbi - 从与 Power BI 中的另一个值相关的记录中获取最短日期
- json - 自定义 Wordpress REST API JSON
- java - 如何将 JSON 对象写入 JAVA 中 JSON 文件中的特定位置
- python - Python:拆分字符串以替换字符会弄乱索引
- python - 我尝试将 Datatable 添加到一个不能作为 POST 方法 django 工作的表单
- c# - API - XML 没有得到正确的格式(WebAPI 控制器)
- oauth-2.0 - facebook的移动身份验证登录流程
- android - GooglePlayServices 的 api isUserResolvableError 在不是可解决错误时也返回 true?