javascript - 解构参数对象,但让它在主体函数中可用?
问题描述
我有这个功能,例如:
const FieldRange = props => (
<div className={b('field-range', props)}>
{props.children}
{!!props.errorFieldName && <Field name={props.errorFieldName}/>}
</div>
);
最终我决定我希望它更干,并像这样重写它,将参数对象重组为属性:
const FieldRange = ({ children, errorFieldName }) => (
<div className={b('field-range', props)}>
{children}
{!!errorFieldName && <Field name={errorFieldName}/>}
</div>
);
但是,哦不,我仍然需要第二行的原始对象!有没有办法解构一个对象,但仍然保留它在函数体中可用?
解决方案
IMO,最好的方法是保留原始代码,或者在函数的第一行声明变量:
const FieldRange = props => {
const { children, errorFieldName } = props;
return (
<div className={b('field-range', props)}>
{props.children}
{!!errorFieldName && <Field name={errorFieldName}/>}
</div>
);
);
有一个非常hacky的解决方案可以让您保持简洁的主体,即使用第二个参数,该参数不传递给函数,默认为 destructured props
:
const FieldRange = (props, { children, errorFieldName } = props) => {
但这很混乱,我不建议这样做。
推荐阅读
- ios - 如何从 Ionic 4.7.1 中的 ion-item 中删除箭头(仅限 IOS)
- java - 二维数组仍然为空
- jquery - 无法使用 jquery 访问 gridview 控件
- reactjs - 在 react-admin 中使用 API 调用的默认值填写创建表单
- php - 如何在我循环的两个页面之间增加一个变量
- python - OpenCv Circle reshape() 和语法的基础是什么?
- android - 如何在 Android 上获得模糊效果?
- javascript - 使用单个 HTML 页面替换内部 HTML 是否是不好的做法?与许多其他页面?
- cassandra - 如何在 Cassandra 中构建动态查询?
- python - 将图片与 QGraphicsItem 关联