V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
sphawkcn
V2EX  ›  JavaScript

请教:代码中出现的“$set”和“&times”是什么东东?

  •  
  •   sphawkcn · 2016-07-24 17:48:17 +08:00 · 6571 次点击
    这是一个创建于 3048 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小菜鸟在看这篇教程: https://www.meteor.com/tutorials/react/update-and-remove

    代码片段如下:

    toggleChecked() {
      Tasks.update(this.props.task._id, {
        $set: { checked: !this.props.task.checked },
      });
    }
    <button className="delete" onClick={this.deleteThisTask.bind(this)}>
      &times;
    </button>
    

    请问这里突然出现的“$set ”和“&times ”是怎么来的(前文无预先定义)?我应该去哪里学习相关的知识点? 还有一个疑问,这里的 bind()方法是谁提供的? JS 原生?还是 React 提供?为何还要传入一个 this ?

    还请帮忙指点小菜鸟,谢谢。

    7 条回复    2016-07-25 11:38:23 +08:00
    raincious
        1
    raincious  
       2016-07-24 17:59:56 +08:00   ❤️ 1
    &times 是 HTML 的符号(其实是乘号),看起来像 x
    https://en.wikipedia.org/wiki/Multiplication_sign#In_computer_software

    $set 则是 React 里的
    shiny
        2
    shiny  
       2016-07-24 18:03:35 +08:00   ❤️ 1
    $set 只是 JSON 的 key ,不是一个变量; &times; 是 HTML entities , 参见这个表格 https://dev.w3.org/html5/html-author/charref

    bind 是 js 原生语法,多读一些 js 的书里有具体解释。
    shiny
        3
    shiny  
       2016-07-24 18:04:21 +08:00   ❤️ 1
    使用 bind 的原因是涉及 js 的作用域,这个是一个难点(敲黑板)
    sphawkcn
        4
    sphawkcn  
    OP
       2016-07-24 18:39:21 +08:00
    谢谢各位老大指点,又学到了黑科技,谢谢。
    otakustay
        5
    otakustay  
       2016-07-24 18:54:31 +08:00   ❤️ 1
    那个$set 十有八九是 immutable update 的方法,应该是 react update helper ,具体也可以参考我的一个类似的库: https://github.com/ecomfe/diffy-update/

    react 的 update helper 的文档没这么详细: https://facebook.github.io/react/docs/update.html
    zhouyg
        6
    zhouyg  
       2016-07-25 11:32:33 +08:00   ❤️ 1
    $set 应该是 Task 的,类比 node mongo 里的 update 方法,就是用$set 来表示要更新的字段和值
    sphawkcn
        7
    sphawkcn  
    OP
       2016-07-25 11:38:23 +08:00
    @zhouyg 那 Task 是谁的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3596 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:46 · PVG 18:46 · LAX 02:46 · JFK 05:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.