社区首页 >问答首页 >当尝试从this.props赋值时,const{}内的赋值不起作用

当尝试从this.props赋值时,const{}内的赋值不起作用
EN

Stack Overflow用户
提问于 2017-05-11 23:10:48
回答 3查看 567关注 0票数 0
代码语言:javascript
代码运行次数:0
复制
render() {
    const { type, id = this.id, className,
     value = this.state.value, required, ...otherProps } = this.props;
    return (
      <input
        id={id}
        name={id}
        className={className}
        required={required}
        aria-required={required}
        type={type}
        value={value}
        onChange={this.handleChange}
        {...otherProps}
      />
    );
  }

我试图将'id‘和'value’分别赋值给'this.id‘和'this.state.value’,但是这些值没有被赋值,而是从从this.props传递的值中得到赋值。

在用例中,componentWillMount()和handleChange()函数使用'pros.id‘和'props.value’来计算一些新的值,这些值将分配给'this.id‘和’the .state.value‘。因此,在上面的代码中,我需要从'this.id‘和'this.state.vale’分别获取'id‘和'value’。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-11 23:17:47

析构中的=是指为非结构化对象中的键指定默认值(如果没有为其提供值)。例如:

代码语言:javascript
代码运行次数:0
复制
const { key1 = 1, key2 = 2 } = { key1: 0 };
console.log(key1); // 0
console.log(key2); // 2

在这种情况下,可以分别对每个对象进行构造以初始化变量:

代码语言:javascript
代码运行次数:0
复制
const { type, className, required, ...otherProps } = this.props;
const { id } = this;
const { value } = this.state;

如果要从id中省略valuevalue,可以使用另一个名称对其进行重构。例如,我将它分配给名为_id_value的变量。

代码语言:javascript
代码运行次数:0
复制
const {
  type, className, required,
  id: _id, value: _value, // eslint-disable-line no-unused-vars
  ...otherProps
} = this.props;
const { id } = this;
const { value } = this.state;
票数 0
EN

Stack Overflow用户

发布于 2017-05-11 23:15:38

您正在将this.props分解为变量,而您所使用的语法只在不存在this.id时才会将this.props.id分配给id。在析构中使用=是为了提供一个默认值,当该值不存在于析构对象中时(因此在本例中,this.id只在不存在this.props.id时才分配给id )。

您应该从对象析构调用中删除id。如果您想提供一个备用选项来使用道具中的id,那么您可以这样做:

代码语言:javascript
代码运行次数:0
复制
const id = this.id || this.props.id;
票数 0
EN

Stack Overflow用户

发布于 2017-05-11 23:21:28

你好像在找

代码语言:javascript
代码运行次数:0
复制
const {type, id: this.id, className, value: this.state.value, required, ...otherProps} = this.props;
//             ^                          ^

:分隔属性名称和赋值目标,=用于默认初始化符。您的语法确实从this.id获取了值,并在this.props中没有id属性时将其分配给了this.props变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43931500

复制
相关文章
AlpineJS作者:不上班,一年站着赚10w刀
这位老哥名叫「Caleb Porzio」,是一名全栈工程师。在离职前,他的年收入为9w刀。
公众号@魔术师卡颂
2021/08/26
1.5K0
AlpineJS作者:不上班,一年站着赚10w刀
Laravel扩展推荐:导航元素工具“Laravel Navigation”
本篇文章给大家分享一个Laravel扩展:Laravel Navigation包,介绍一下怎么利用Laravel Navigation 轻松构建站点导航元素,希望对大家有所帮助!
很酷的站长
2022/11/29
5030
Laravel扩展推荐:导航元素工具“Laravel Navigation”
Laravel Jetstream是什么以及如何入门?
Laravel Jetstream 与 Laravel 8 一起于2020年9月8日发布。
Lemon黄
2020/09/28
6.5K0
lineNumber: 6; columnNumber: 40; 文档根元素 “mapper” 必须匹配 DOCTYPE 根 “configuration”。
lineNumber: 6; columnNumber: 40; 文档根元素 “mapper” 必须匹配 DOCTYPE 根 “configuration”。
全栈程序员站长
2022/07/01
5880
JavaScript动态设置根元素的rem
说到rem自然就会想到em,我们知道em是相对于父元素的字体大小的单位,那么rem则是相对于根元素也就是元素的字体大小的单位。
刘亦枫
2020/03/19
4.2K0
Vue3 - $attrs 的几种用法(1个或多个根元素、Options API 和 Composition API)
使用 Vue 开发时,肯定会接触到 组件 的概念,无可避免的也会接触到 组件通讯 的概念。
德育处主任
2022/09/23
3.5K0
Vue3 - $attrs 的几种用法(1个或多个根元素、Options API 和 Composition API)
多个Laravel项目如何共用migrations详解
在实际开发中,我们可能经常会遇到一个项目会建立两个 Laravel 项目,一个是面向用户的 web/API,一个是管理员后台,这两个项目一般情况下是共用一个数据库的,那么我们的 migration 可以共用吗?该怎么操作?
子润先生
2021/07/13
6920
多个扇形元素绕圆旋转
这种效果有很多方案,最后选择了一个比较简单的方案,就是一个position: relative;的 div 。包裹5个position: absolute;的div。 通过旋转,调整5个div的 top 与 left,而产生弧度,并使中心点都指向圆心。 黄色扇形与文字 都是在5个div内部。
拿我格子衫来
2023/10/19
2560
多个扇形元素绕圆旋转
数据校检
数据校验的基本原理 <1> 数据校验的必要性 受元器件的质量、电路故障或噪音干扰等因素的影响,数据在被处理、传输、存储的过程中可能出现错误 若能设计硬件层面的错误检测机制,可以减少基于软件检错的代价(系统观) <2> 校验的基本原理 增加冗余码(校验位) - 有效信息(k位) 校验信息(r位) <3> 码距的概念 同一编码中,任意两个合法编码之间不同二进制位数的最小值 0011 与 0001 的码距为1,一位错误时无法识别 0000、0011、0101、0110、1001、1010、1100、1111等
ruochen
2021/05/16
7390
数据校检
如何修改Laravel中url()函数生成URL的根地址
本文主要给大家介绍了修改Laravel中url()函数生成URL的根地址的相关内容,相信大家都晓得 Larevel 的一票帮助函数中有个 url(),可以通过给予的目录生成完整的 URL,是非常方便的一个函数:
用户8449980
2021/07/13
3.4K0
一个 Vue 模板可以有多个根节点(Fragments)?
通常,我们通过在最外层包裹一层 div 来解决这个问题,但这个div元素一般没有啥使用,就是让模板符合单根需求。
前端小智@大迁世界
2020/05/12
3.4K0
c++ vector删除多个元素方法
转自:https://blog.csdn.net/daofengdeba/article/details/7865229
用户7886150
2021/01/19
2.7K0
Laravel 使用多个数据库连接
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105853.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/09
1.4K0
Laravel 中使用 PM2 管理多个队列
接着上一篇的思路,要在 Laravel 中使用 PM2 管理多个队列,该如何操作呢
Bolton
2023/05/31
6650
我是如何通过开源项目做到年入 80 万的?
不知道你是否还记得,去年我们曾经在公众号上发布过一篇文章《我是如何通过开源项目月入 10 万的?》,里面主要讲述了知名前端开源项目 fullPage.js 作者是如何通过 GitHub 做到年入百万的事迹。
GitHubDaily
2020/06/29
9980
我是如何通过开源项目做到年入 80 万的?
竟然有人质疑我还在用Laravel开发?别忘了PHP是最好的语言。
之前写了一篇Laravel提高DB查询效率的文章,转发到群里后竟然有人质疑我说“Laravel是他好几年前用的框架,没想到现在还有人在用。”
王中阳Go
2022/10/26
2.5K0
vue的单根元素问题及解决方法
在进行vue项目开发时,难免遇到各种各样的问题,虽然这些问题和报错会打击我们的自信心,但是只要换个方位思考,问题将成为驱使我们前进的动力。下面小编将以组件模板的单一根元素问题为例,讲解如何使用问题驱动法,解决并拓展想关的问题。
算法与编程之美
2021/11/15
4380
点击加载更多

相似问题

Livewire -检测到多个根元素

11

Livewire:检测到多个根元素。这是不支持的。

15

Laravel Livewire超时

115

多个设备(实例)之间的Laravel livewire同步

114

检测到空的XML根元素

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文