javascript - export default 中的 props 有什么作用?
问题描述
嗨,我现在正在学习 React,我看到了这段代码
import React from "react";
import {Component} from "react";
import {BackstageTheme} from '@backstage/theme'
const useStyles = makeStyles<BackstageTheme>(() =>
createStyles({
someStyle: {
position: 'relative',
}
}),
);
class MyComponent extends Component<any, any> {
constructor(props) {
super(props);
}
componentWillReceiveProps(props) {
this.fetchData(props.filters);
}
public componentDidMount() {
this.fetchData(null);
}
public fetchData(filters) {
// fetch data thru API
}
public render() {
const classes = this.props.classes;
return (
//layout..
);
}
}
export default (props) => {
const classes = useStyles();
return (
<MyComponent classes={classes} filters={props.filters}/>
)
}
我很困惑,在底部,导出默认值,,
为什么要传递一个props,为什么有filters={props.filters}?
我可以删除filters={props.filters}吗?
我可以只 导出默认 MyComponent吗?
如果这仍然适用于export default MyComponent,那么传递一个道具有什么区别???
解决方案
在代码底部导出的函数只是另一个函数组件,每个 React Funciton 组件都必须接收作为参数props
,这是一个包含传递给组件的所有属性的对象。
这是一个与props
考虑您有这样的HelloWord
组件定义相关的示例
function (props) {
return <p>Hello World</>
}
当你像这样在 JSX 中使用这个组件时
<HelloWorld name="John Doe"/>
传递给上述函数定义的props
参数将等于{"name": "John Doe", ...}
您可以在此处了解有关组件和道具的更多信息
考虑到您提供的代码在文件名中MyComponent.js
,当您导入此文件而不从您获得的文件中解构导出数据时,就是导出的组件。了解有关ES6 模块默认导出的更多信息
import MyComponent from './MyComponent';
此行将准确返回默认导出的功能组件,即
export default (props) => {
const classes = useStyles();
return (
<MyComponent classes={classes} filters={props.filters}/>
)
}
与props.filters
您可以删除如果但MyComponent
您在代码中定义的期望有一个道具名称相关filters
,您可以在此处看到
componentWillReceiveProps(props) {
this.fetchData(props.filters);
}
Filter 属性用于在 Lifecycle 方法中获取一些数据componentWillReceiveProps
。
你可以, export default MyComponent
但你必须传递classes
和filters
道具,因为它们在代码中使用MyComponent
它会和这里完全一样
return (
<MyComponent classes={classes} filters={props.filters}/>
)
推荐阅读
- javascript - 将函数作为反应道具传递
- javascript - 尝试在单击时播放音频文件时无法读取未定义的属性“keyCode”
- clojurescript - Figwheel-main 未连接到 websocket
- python - 如何有效地将角度(弧度)转换为从 0 到 7 的索引?
- java - 如何用硒、黄瓜和 gradle 修复“java.lang.NullPointerException”?
- tkinter - UI 和硬件按钮
- ios - 如何添加包含新数据的临时单元格?
- php - 变量不传递给类(PHP)
- entity-framework - 从附加实体内部获取数据库上下文
- linux - 我如何能够从终端将共享库作为可执行文件运行?