我希望在不使用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)
我很高兴使用connect从react-redux我需要添加动作或监听组件中的状态更改时提供的功能,但是当我想在组件外部设置一些逻辑(主要是调度)时,我会卡住.
简而言之,我想验证一个字段.我想创建一个validation.js文件,我可以从存储中侦听更改,运行验证逻辑,然后发送一个带有最终错误的操作.
至于商店,它不是全局的,我没有使用React组件.让商店监听变更和分派行动的方法是什么?
提前致谢.
我将使用React Native为Android构建一个应用程序,我很想知道我是否可以访问NFC功能.我可以看到与Cordova相关的东西,但就我对原生移动网络应用程序的新手而言,我想进一步搜索.
谢谢你的时间.
我正在尝试使用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: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)
在生产环境中,环境变量被配置为应用程序名称.
我想我错了一些配置,但经过一整天我仍然无法弄明白.
更新
我继续我的测试,我已经看到代理无法访问完全阻止我的代理服务.
在开发中我设置:
我正在使用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.
希望问题得到很好的描述.谢谢.
我正在尝试使用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)