小编Sal*_*man的帖子

Redux @connect装饰器中的'@'(符号)是什么?

我正在使用React学习Redux并且偶然发现了这段代码.我不确定它是否特定于Redux,但我在其中一个示例中看到了以下代码片段.

@connect((state) => {
  return {
    key: state.a.b
  };
})
Run Code Online (Sandbox Code Playgroud)

虽然功能connect非常简单,但我@之前并不理解connect.如果我没错,它甚至不是JavaScript运算符.

有人可以解释一下这是什么,为什么用它?

更新:

事实上,react-redux它的一部分用于将React组件连接到Redux存储.

javascript decorator reactjs redux

216
推荐指数
2
解决办法
6万
查看次数

如何明确地将商店作为道具传递给"Connect()"

我试图测试我的React组件并得到以下错误.

不变违规:无法在"连接()"的上下文或道具中找到"存储".将根组件包装在<Provider>中,或者显式地将"store"作为prop传递给"Connect()".

在测试中渲染Component时出错.

beforeEach(() => {
  Component = TestUtils.renderIntoDocument(<SideMenu />);
});
Run Code Online (Sandbox Code Playgroud)

在页面上呈现Component时,它工作正常.但是在测试中,我无法将存储明确地传递给Component.

有人能指出正确的方向吗?

phantomjs reactjs redux react-redux

18
推荐指数
2
解决办法
1万
查看次数

删除jQuery.ajaxSetup中设置的特定请求标头

我使用设置一些自定义标头

$.ajaxSetup({
    headers : {
        'x-custom' : 'value'
    }
});
Run Code Online (Sandbox Code Playgroud)

它将x-custom为所有ajax请求添加标头.但是我希望一些特定的请求不包含此标头.

我试过这个,在ajax调用之前从ajaxSettings中删除头文件,并在完成后将其添加回来

delete $.ajaxSettings.headers["x-custom"];

$.ajax({
    ...
    "success": function (data) {
        $.ajaxSettings.headers["x-custom"] = 'value';
        ...
    }
});
Run Code Online (Sandbox Code Playgroud)

但我觉得这不是正确的方法,因为在完成该调用之前触发的请求将不会获得该标头.我还能做些什么呢?

我应该$.ajax在回调后将其添加回下一行吗?

javascript ajax jquery http-headers

14
推荐指数
1
解决办法
1万
查看次数

Node.js将响应对象句柄的句柄传递给子进程

我有一个http服务器和一个分叉的子进程.我希望父级接收请求并使用传递给分叉进程worker.send.并且worker应该能够使用相同的响应对象处理并将响应发送回请求者.

我尝试在第二个参数中发送响应对象worker.send,但它给出了错误This handle type can't be sent

var child_process = require('child_process');

var worker = child_process.fork(filename);

http.createServer(function (req, res) {
    worker.send({ 'event': 'start' }, res); // send response object
}).listen(4000);
Run Code Online (Sandbox Code Playgroud)

我检查了child_process.js文件,它说如果它不属于某些类型,它将抛出错误.

我想知道是否还有其他选项可以将响应对象发送给分叉的子节点.

编辑:

好的,这是我发现的,我刚刚更改了以下内容

// Instead of
// worker.send({ 'event': 'start' }, res);
worker.send({ 'event': 'start' }, res.socket);
Run Code Online (Sandbox Code Playgroud)

分叉进程能够调用write它获得的处理程序.

这是对的吗?我可以这样使用吗?或者在某些等等条件下是否会产生任何影响?

javascript http child-process node.js

9
推荐指数
1
解决办法
1723
查看次数

我可以在PureComponent中使用shouldComponentUpdate吗?

我知道功能shouldComponentUpdate以及PureComponent.但我想知道我是否可以将两者结合使用?

说我有很多道具,我想让浅层比较处理PureComponent.除了1道具,需要巧妙地进行比较.那么有可能用shouldComponentUpdate它吗?React会考虑哪个结果?

换句话说,React会调用PureComponent浅层比较然后调用我的shouldComponentUpdate吗?或者我shouldComponentUpdate会覆盖原来的?

如果它是双层的,如果PureComponent返回false,控制进入我shouldComponentUpdate有另一个机会的地方将会很好return false.

javascript reactjs

9
推荐指数
1
解决办法
2206
查看次数

如何单元测试异步Redux动作来模拟ajax响应

我正在创建一个使用异步操作发出ajax请求的中间件.中间件拦截原始操作,执行ajax请求,并将dispatch原始操作与来自的响应一起响应url.

所以,我的Component只是dispatch一个像这样的动作

onClick() {
    dispatch(ActionCreator.fetchUser());
}
Run Code Online (Sandbox Code Playgroud)

其余部分将通过中间件如图所示照顾这里.

我的问题是,我应该怎么做单元测试?我应该嘲笑onClick自己吗?或者我应该编写一个模拟的中间件并用模拟的响应转发行为?

我不确定应采取哪种方法.我尝试了几种东西,但我尝试过的东西都没有对我有意义.

有什么指针吗?

javascript jasmine reactjs redux

8
推荐指数
1
解决办法
8692
查看次数

如何更新不可变List以获取新列表

我有一个不可变Map的如下

var mapA = Map({
  listA: List.of({
    id: 1,
    name: 'Name A',
    selected: false
  }, {
    id: 2,
    name: 'Name B',
    selected: false
  })
});
Run Code Online (Sandbox Code Playgroud)

我想更新selected列表中的密钥.根据immutable.js文档list.update.

返回一个新的List,其索引处的更新值带有调用updater的返回值

但是,如果我这样做

var listB = mapA.get('listA').update(1, function (item) {
    item.selected = true;
    return item;
});
Run Code Online (Sandbox Code Playgroud)

并且,检查对象是否相等,它给了我true.

console.log(listB === x.get('listA')); // true
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?是不是应该如何使用immutable.js?

javascript immutable.js

6
推荐指数
1
解决办法
832
查看次数

Node.js全局定制require函数

我试图修改require这样的

require = function (path) {
    try {
        return module.require(path);
    } catch (err) {
        console.log(path)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,此修改的范围仅在当前模块中.我想全局修改它,因此require该模块的每个模块也将获得相同的require函数副本.

基本上,我想SyntaxError知道哪个文件有问题.我似乎找不到任何其他选择.如果我把module.requiretry/catch块中,我能得到这引起了文件名SyntaxError.

module node.js

5
推荐指数
1
解决办法
2448
查看次数

在angular.js的select下拉列表中绑定值和文本

我的页面中有这个下拉列表

<select 
    ng-options="col.col_id as col.col_name for col in meta_data.x_cols"
    ng-model="obj.x">
</select>
Run Code Online (Sandbox Code Playgroud)

由于模型设置为obj.x,我可以$scope.obj.x在任何$scope函数中使用它.

当然,它给出了value所选择的选项.我有什么方法可以获得所选文本吗?例如,绑定obj.xobj.x_text所选选项的文本.

javascript angularjs ng-options angular-ngmodel

5
推荐指数
1
解决办法
2万
查看次数

切换标签时,离子后退按钮显示不正确

我有一个主选项卡,它只显示项目列表.和设置选项卡,其中包含用于设置不同配置的嵌套视图.

如果我按此特定顺序导航,后退按钮显示不正确,或者如果要显示,则标题不会离开:37px

这就是我创建导航栏的方式.

<ion-nav-bar class="bar-stable no-animation" align-title="left">
  <ion-nav-back-button class="button-icon icon ion-ios7-arrow-back"></ion-nav-back-button>
</ion-nav-bar>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

是否有解决方案,要么清除该选项卡的历史记录,那么在单击它时会打开主设置选项卡而不是先前打开的嵌套视图?或者如果需要显示,则应正确计算标题的左侧.

这是一个codepen演示.单击此顺序中的选项卡.

1. On main page, click on Scientific Facts
2. After view changes, click on Contacts tab
3. Then click on Home tab again. It reproduces the behavior.
Run Code Online (Sandbox Code Playgroud)

更新:

到目前为止,我发现有一个$scope.$watch决定是否显示或隐藏后退按钮.这会被触发很晚(在计算和标题对齐之后).因此,在计算时,leftWidth不会返回按钮的宽度.

javascript angularjs cordova-3 ionic-framework

5
推荐指数
1
解决办法
3297
查看次数