javascript - 不理解使用三点符号的 Javascript 语法
问题描述
我正在为工作学习 Javascript。具体来说,我正在学习一个 React/Redux Web 应用程序,并且在整个应用程序中使用三点符号时遇到了问题。我用谷歌搜索了三点符号的含义,看起来它是扩展运算符。但据我了解,扩展运算符只能用于可迭代对象,例如数组。我没有看到可迭代的参数。下面的示例代码是应用程序使用的示例。在示例中,我们有 2 个反应组件AppInput
和SomeObject
. SomeObject
使用参数调用AppInput
render 方法,这些参数被分配给 AppInput 中的道具。但我不明白它是如何做到的。有人可以解释下面的代码中发生了什么吗?谢谢
export default class AppInput extends React.Component {
static propTypes = {
className: PropTypes.string,
disabled: PropTypes.bool,
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]),
onChange: PropTypes.func,
inputRef: PropTypes.func,
type: PropTypes.string,
highlighted: PropTypes.bool
}
.....
constructor(props) {
super(props);
this.state = { value: sanitizeValue(props.value) };
}
.....
}
export class SomeObject extends React.Component<Props, State> {
.....
return (
<div className="generic-table-row">
<div className="generic-table-cells">
<AppInput
{...{
value: someVal,
onChange: this.handleChange,
className: 'someOtherObj',
disabled: !pushMode
}}
/>
</div>
{deleteMode && deleteMessage}
</div>
);
}
}
解决方案
所做的...
只是将它所指的对象(匿名对象)的内容传播出去——所以它会是这样value={someVal}
。
推荐阅读
- c++ - 在 C++ 中逐行读取字符串并且不要以空格停止
- java - IntelliJ/JDK 11:找不到符号名称()接口 java.lang.annotation.Annotation
- imgur - 在韩国上传图片时禁止出现错误 400
- kubernetes - 如何监控gcloud k8s HTTP失败率?
- java - 当 maven 构建运行测试时,Spring Boot 项目抛出 *$$EnhancerBySpringCGLIB 不是 @AspectJ 方面
- react-native - 键盘打开时TextInput不可见Expo React Native
- c - 引用自:/usr/local/opt/glib/lib/libgobject-2.0.0.dylib - 移植到 c (gtk/cairo) 的 bitlib 图形库
- php - 未读消息功能在 Laravel 中不起作用
- ssrs-2012 - SSRS相关的格式化
- json - Qt 从 JSON 文件读取数据以在 .ui.qml 文件中使用