我正在寻找一种方法来检测是否在组件外发生了单击事件,如本文所述.jQuery nearest()用于查看click事件中的目标是否具有dom元素作为其父元素之一.如果匹配,则click事件属于其中一个子项,因此不被视为在组件之外.
所以在我的组件中,我想将一个单击处理程序附加到窗口.当处理程序触发时,我需要将目标与我的组件的dom子项进行比较.
click事件包含"path"之类的属性,它似乎保存了事件所经过的dom路径.我不确定要比较什么或如何最好地遍历它,我认为有人必须已经把它放在一个聪明的实用功能中......不是吗?
在这种情况下解决jslint错误的正确方法是什么?我正在为使用它的对象添加一个getter函数.如果不在循环内创建函数,我不知道如何做到这一点.
for (var i = 0; i<processorList.length; ++i) {
result[i] = {
processor_: timestampsToDateTime(processorList[i]),
name_: processorList[i].processorName,
getLabel: function() { // TODO solve function in loop.
return this.name_;
}
};
}
Run Code Online (Sandbox Code Playgroud) 我正在创建一个Bash安装程序脚本,它为OSX和Linux编译和安装一些库.因为我的脚本中的一些命令("make install","apt-get install","port install"等)需要sudo,我需要用户提供密码.
目前,只要第一个sudo命令即将执行,就会要求用户输入密码,但由于这通常是在编译阶段之后,因此在启动脚本和输入密码之间总会有一段时间.
我想在脚本的开头放入密码输入+检查.另外,我很好奇这是否真的是一种安装系统库的好方法.
或者我可以在不需要sudo的本地沙箱位置安装库,但是我必须告诉apt-get和macports安装他们的库以外的默认值/ usr/local /和/ opt/local ,我不知道该怎么做,也不知道这是一个聪明的想法.
我正在尝试在构建之后更改dylib的安装路径.我otool -L
用来检查当前路径是什么.然后我做:
$ install_name_tool -change /my/current/path/libmine.dylib \
/my/new/path/libmine.dylib libmine.dylib
Run Code Online (Sandbox Code Playgroud)
我没有收到错误,但没有任何变化.如果我再次检查路径,旧路径仍在那里.此外,新路径比旧路径要短得多,所以没有问题,我认为lib甚至可以使用额外的标志进行编译,以获得更多的文件路径空间.
有任何想法吗?
我已经使用有状态存储以"正常"方式构建了我的第一个React应用程序,现在我正在研究使用Este starterkit中使用的不可变全局状态.
它以几种方式简化了应用程序结构:
我只读了关于在React中使用不可变数据的积极的事情,建议避免组件中的状态,所以我想知道是否有任何缺点.我想一定有,因为否则我不明白为什么它不推荐,因为在构建应用程序做出反应的方式.
不变性对我来说是新的,所以如果我在一个复杂的真实应用程序中开始使用这种方法,我应该注意一些警告吗?
我能想到的唯一一件小事是在Este使用它时使用forceUpdate(),因为我已经读过它是一个同步函数.例如,Morearty似乎将更新推迟到下一个动画帧以便批量处理它们,但我认为这是一个实现细节/优化,而不是一些继承的不可变单态方法的缺点.
我有一个Koa服务器使用webpack-dev-middleware和webpack-hot-middleware做热模块替换(HMR),所以中间件使用websocket将更改推送到客户端.
但是我的应用程序代码也需要在客户端和Koa服务器之间拥有自己的websocket连接.我不知道如何实现这一目标?似乎这两者是相互矛盾的.我能和他们并排吗?
我的服务器代码看起来像这样
const compiler = webpack(webpackConfig)
const app = new Koa()
app.use(webpackDevMiddleware(compiler, {
quiet: true,
noInfo: true
stats: {
colors: true,
reasons: true
}
})))
app.use(webpackHotMiddleware(compiler))
const server = require('http').createServer(app.callback())
const io = require('socket.io')(server)
io.on('connection', function() { console.log('socket connection!!') })
Run Code Online (Sandbox Code Playgroud)
和我的客户一样
import Client from 'socket.io-client'
const io = Client()
io.on('connection', (socket) => {
console.log('+++ io connected! ++++')
io.on('disconnect', () => { console.log('disconnected', socket) })
})
Run Code Online (Sandbox Code Playgroud)
HMR套接字工作正常,但另一个正在尝试与之交谈
GET /socket.io/?EIO=3&transport=polling&t=1446911862461-0
并且这些请求失败.
如何创建不与HMR套接字冲突的websocket?
由于有关Firestore中即将发生的时间戳行为更改的警告,我正在尝试更改应用程序的初始化代码.
存储在Firestore中的Date对象的行为将发生变化,您的应用程序可能会发生变化.要隐藏此警告并确保您的应用不会中断,您需要在调用任何其他Cloud Firestore方法之前将以下代码添加到您的应用中:
const firestore = firebase.firestore(); const settings = {/ your settings .../timestampsInSnapshots:true}; firestore.settings(设置);
通过此更改,存储在Cloud Firestore中的时间戳将作为Firebase Timestamp对象而不是系统Date对象读回.
我找不到任何对firestore"settings"的引用.会这样的吗?Typescript定义说没有......
import * as admin from "firebase-admin";
export const adminApp = admin.initializeApp();
const firestore = admin.firestore(adminApp);
firestore.settings({ timestampsInSnapshots: true });
Run Code Online (Sandbox Code Playgroud) 我有一个问题,Typescript编译器成功编译我的代码,但运行时给了我未定义的类型错误.
在我的应用中,我创建了一个types.ts
文件,其中包含多个其他ts文件之间共享的内容 它包含一个字符串枚举,如:
enum MyEnum {
One = "one";
Two = "two";
}
Run Code Online (Sandbox Code Playgroud)
当我这样定义它.编译器让我在其他ts文件中使用它,看起来很开心.但是,在运行时我收到错误"MyEnum未定义".
我知道有两种方法可以解决这个问题:
我对Typescript很新,我觉得我可能误解了一些基本的东西.
首先,我不明白为什么如果会出现运行时错误,Typescript编译器会愉快地编译我的代码.我会理解它,如果我使用了declare
关键字,告诉编译器在运行时应该有什么东西可用,但在这种情况下我不明白为什么它应该假设枚举来自除了types.ts文件以外的任何地方.
其次,我想在我的应用程序中全局定义类型,并让它们在任何地方都可用,而不必在每次使用它们时都导入它们.我该如何做到这一点?或者这可能被认为是不好的做法?
我使用的是Typescript 2.6,我的配置如下所示:
{
"compilerOptions": {
/* Basic Options */
"target": "es6",
"module": "commonjs",
"lib": ["es6", "es7", "esnext"],
"sourceMap": true /* Generates corresponding '.map' file. */,
"outDir": "build" /* Redirect output structure to the directory. */,
"removeComments": true /* Do not emit comments to output. */,
/* Strict Type-Checking Options */
"strict": true /* Enable …
Run Code Online (Sandbox Code Playgroud) 我开始使用RxJs(使用v5测试版),但不知怎的,我无法弄清楚如何使用它distinctUntilChanged
.如果我在babel-node中运行它,下面代码的输出是
[ 'a', 1 ]
{ key: 'a', state: 1 }
Next: { value: 42 }
Completed
Run Code Online (Sandbox Code Playgroud)
这不是我所期望的.为什么只有一个条目通过distinctUntilChanged
?我希望输出是
[ 'a', 1 ]
[ 'a', 0 ]
[ 'a', 1 ]
{ key: 'a', state: 1 }
{ key: 'a', state: 2 }
{ key: 'a', state: 0 }
{ key: 'a', state: 1 }
Next: { value: 42 }
Next: { value: 24 }
Completed
Run Code Online (Sandbox Code Playgroud)
这是代码
import {Observable} from 'rxjs'
Observable.of(['a', 1], ['a', 1], ['a', 0], …
Run Code Online (Sandbox Code Playgroud) 我有一个由几个三角形组成的形状,它位于世界空间的某个地方,有刻度,旋转,平移.我还有一个平面,我想在其上投影(正交)形状.
我可以将形状中每个三角形的每个顶点与对象变换矩阵相乘,以找出它在世界坐标中的位置,然后将此点投影到平面上.
但我不需要绘制投影,而是想用形状的逆变换矩阵变换平面,然后将所有顶点投影到(逆变换)平面上.因为它只需要我一次变换平面而不是每个顶点.
我的飞机有一个法线(xyz)和一个距离(d).如何将它与4x4变换矩阵相乘以使其结果正常?
你能创建一个vec4作为xyzd并乘以它吗?或者可能创建一个向量xyz1然后再用d做什么?