小编And*_*ato的帖子

访问redux没有反应

我希望在不使用React组件的情况下访问商店(发送和观察).我一直在寻找几个小时,没有结果.

情况就是这样.我在App根目录中创建了商店:

import { Provider } from 'react-redux'
import createStore  from './state/store';

let store = createStore();

ReactDOM.render( 
  <Provider store={store}>
    <App>
  </Provider>, 
  document.getElementById('root')
);
Run Code Online (Sandbox Code Playgroud)

我很高兴使用connectreact-redux我需要添加动作或监听组件中的状态更改时提供的功能,但是当我想在组件外部设置一些逻辑(主要是调度)时,我会卡住.

简而言之,我想验证一个字段.我想创建一个validation.js文件,我可以从存储中侦听更改,运行验证逻辑,然后发送一个带有最终错误的操作.

至于商店,它不是全局的,我没有使用React组件.让商店监听变更和分派行动的方法是什么?

提前致谢.

javascript reactjs redux

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

是否可以从React App访问NFC功能

我将使用React Native为Android构建一个应用程序,我很想知道我是否可以访问NFC功能.我可以看到与Cordova相关的东西,但就我对原生移动网络应用程序的新手而言,我想进一步搜索.

谢谢你的时间.

android reactjs react-native

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

在Heroku上使用Node.js的代理服务器

我正在尝试使用http-proxy在Heroku上使用Node.js构建代理服务器.一切都在当地运作良好,但我在Heroku上遇到了一些麻烦.

var http = require('http');
var httpProxy = require('http-proxy');

settings = {
  "localhost": process.env.LOCALHOST,
  "devices":   process.env.DEVICES_URI
}

var options = { router: { } }
options.router[settings.localhost + '/devices']  = settings.devices + '/devices';

var port   = process.env.PORT || 8000;
var server = httpProxy.createServer(options).listen(port);
Run Code Online (Sandbox Code Playgroud)

正如您在示例中所看到的,我设置了一个路由对象.我所说的是:当请求与'/ devices'匹配时,请将请求路由到设备服务.(由DEVICES_URI环境变量识别)

在开发我设置

  • LOCALHOST ='localhost'
  • DEVICES_URI ='http:// localhost:3000'

这意味着所有发往localhost:8000/devices的请求都代理到localhost:3000/devices,这就是我想要的.一切都很完美.

问题在于生产.它给了我一个超时错误,每次请求重复多次.

2012-08-23T20:18:20+00:00 heroku[router]: Error H12 (Request timeout) -> GET lelylan-api.herokuapp.com/devices dyno=web.1 queue= wait= service=30000ms status=503 bytes=0
Run Code Online (Sandbox Code Playgroud)

在生产环境中,环境变量被配置为应用程序名称.

  • LOCALHOST ='lelylan-api.herokuapp.com'
  • DEVICES_URI ='lelylan-devices.herokuapp.com/'

我想我错了一些配置,但经过一整天我仍然无法弄明白.

更新

我继续我的测试,我已经看到代理无法访问完全阻止我的代理服务.

在开发中我设置:

  • LOCALHOST ='localhost'
  • DEVICES_URI ='lelylan-devices.herokuapp.com/' …

proxy heroku node.js

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

具有多个OR的复杂MongoDB查询

我正在使用mongodb,我已经构建了以下查询.

1 AccessToken.where('resource_owner_id').equals(event.resource_owner_id)
2           .where('revoked_at').equals(undefined)
3           .or([ { scopes: /resources/i }, { scopes: new RegExp(event.resource,'i') } ])
4           .or([ { device_ids: [] }, { device_ids: event.body.id } ])
Run Code Online (Sandbox Code Playgroud)

对于这个例子,我使用的是Mongoose和coffescript.

不幸的是,它不能按我的意愿工作,主要是为了or声明.我想要的是or第3行和第4行中的两个是独立的.

这意味着字段scopes(第3行)必须包含resources存储在event.resource中的字符串或字符串,同时该字段device_ids必须为空或包含id event.body.id.

从我准备的测试中我可以看到or命令全部放在一起.这意味着当满足四个条件中的一个或条件时,我得到文档.

- { scopes: /resources/i }
- { scopes: new RegExp(event.resource,'i') }
- { device_ids: [] }
- { device_ids: event.body.id }
Run Code Online (Sandbox Code Playgroud)

我无法达到的目的是将它们分成两组,以便满足与该领域scopes相关的条件和与该领域相关的条件device_ids.

希望问题得到很好的描述.谢谢.

mongodb

3
推荐指数
1
解决办法
5350
查看次数

使用外部服务测试Angular $资源

我正在尝试使用Angular $资源对REST请求进行一些基本测试.服务代码工作得很好.

'use strict';

angular.module('lelylan.services', ['ngResource']).
  factory('Device', ['Settings', '$resource', '$http', function(Settings, $resource, $http) {

    var token = 'df39d56eaa83cf94ef546cebdfb31241327e62f8712ddc4fad0297e8de746f62';
    $http.defaults.headers.common["Authorization"] = 'Bearer ' + token;

    var resource = $resource(
      'http://localhost:port/devices/:id',
      { port: ':3001', id: '@id' },
      { update: { method: 'PUT' } }
    );

    return resource;
  }]);
Run Code Online (Sandbox Code Playgroud)

我在指令中使用Device资源,它可以工作.当我开始对服务进行一些测试时,问题出现了.这是一个示例测试,我使用$ httpBackend模拟HTTP请求,并向模拟的URL发出请求.

不幸的是,虽然提出了要求,但它不会返回任何内容.我确定这一点,因为如果对另一个URL发出请求,测试套件会自动引发错误.我花了很多时间,但没有解决方案.这里是测试代码.

'use strict';

var $httpBackend;

describe('Services', function() {

  beforeEach(module('lelylan'));

  beforeEach(inject(function($injector) {
    var uri = 'http://localhost:3001/devices/50c61ff1d033a9b610000001';
    var device = { name: 'Light', updated_at: '2012-12-20T18:40:19Z' };
    $httpBackend = $injector.get('$httpBackend');
    $httpBackend.whenGET(uri).respond(device)
  }));

  describe('Device#get', function() { …
Run Code Online (Sandbox Code Playgroud)

testing rest angularjs

3
推荐指数
1
解决办法
3298
查看次数