我正在构build与ReactJS和Flux的Web应用程序,我试图使用方法findDOMNode获取我当前的div的节点,我得到下一个错误: Uncaught TypeError: React.findDOMNode is not a function 所以,我试图使用getDOMNode ,我得到了非常相同的错误: Uncaught TypeError: React.getDOMNode is not a function 我使用npm来构buildJS,我使用这些方法的代码: var React = require('react'); var stores = require('../stores'); var MessagesUserContainer = require('./messageusercontainer'); var ChatStore = stores.ChatStore; var owner = stores.getOwner(); var MessagesList = React.createClass({ getInitialState: function(){ return {'muc': []}; }, componentDidUpdate: function(){ var node = React.findDOMNode(this); //Error […]
我明白,这个图像已经成为大多数(如果不是全部的话)Flux程序员的最终指导。 考虑到这一点,我有几个问题: 我的Web API Utils中是否有所有$.ajax调用是正确的/强烈build议? callback调用动作创build者,传递过程中的数据 如果我想让我的商店进行AJAX调用 ,我必须先调用Action Creator ,对吗? 直接从Store中调用Web API Utils中的函数从根本上说是不正确的? 有没有像从商店连接到动作创作者的虚拟单向箭头? 我有很多操作,没有通过意见 调度员和商店之间的callback是什么? 这里的Web API是什么? 这是你在哪里应用RESTful API? 有没有这个地方的例子? 在我的一个动作创作者中有一个涉及的逻辑(知道发送哪个动作 )可以吗? 基本上,这个动作接收来自我的AJAX调用的响应。 这是一个片段: var TransportActions = { receiveProxyMessage: function (message, status, xhr) { switch (message) { case ProxyResponses.AUTHORIZED: AppDispatcher.dispatch({ type: ActionTypes.LOGIN_SUCCESS, reply: m }); break; case ProxyResponses.UNAUTHORIZED: AppDispatcher.dispatch({ type: ActionTypes.LOGIN_FAIL, reply: m }); […]
用同构应用程序设置应用程序初始状态的一般做法是什么? 没有通量我会简单地使用像这样的东西: var props = { }; // initial state var html = React.renderToString(MyComponent(props); 然后通过快速 {{{reactMarkup}}呈现该标记,并通过{{{reactMarkup}} 。 在客户端设置初始状态,我会做这样的事情: if (typeof window !== 'undefined') { var props = JSON.parse(document.getElementById('props').innerHTML); React.render(MyComponent(props), document.getElementById('reactMarkup')); } 所以,基本上你是在服务器和客户端设置了两次状态,不过React会比较差异,在大多数情况下,不会因为重新渲染而影响性能。 如果您在Flux架构中采取行动和存储,这个原则将如何工作? 在我的组件内我可以这样做: getInitialState: function() { return AppStore.getAppState(); } 但是现在我怎么从服务器设置AppStore的初始状态呢? 如果我使用React.renderToString没有传递的属性,它会调用AppStore.getAppState() ,它不会有任何东西,因为我仍然不明白我将如何设置我的商店在服务器上的状态? 2015年2月5日更新 我仍然在寻找一个干净的解决scheme,不涉及使用Fluxible,Fluxxor,Reflux等第三方Flux实现。 2016年8月19日更新 使用Redux 。
我正在迁移到Redux。 我的应用程序由很多部分(页面,组件)组成,所以我想创build许多reducer。 Redux示例显示我应该使用combineReducers()来生成一个reducer。 另外据我所知Redux应用程序应该有一个商店,它是一旦应用程序启动时创build。 当商店正在创build时,我应该通过我的组合减速机。 如果应用程序不是太大,这是有道理的。 但是,如果我构build多个JavaScript包,该怎么办? 例如,每个应用程序页面都有自己的包。 我认为在这种情况下,联合减速机是不好的。 我查看了Redux的源代码,发现了replaceReducer()函数。 这似乎是我想要的。 我可以为我的应用程序的每个部分创build组合的replaceReducer()器,并在应用程序的各个部分之间移动时使用replaceReducer() 。 这是一个好方法吗?
我读过这个答案 , 减less了样板 ,看了几个GitHub的例子,甚至尝试了一点点(todo应用程序)。 据我所知, 官方的redux doc动机提供了优于传统的MVC架构。 但是它没有提供对这个问题的答案: 为什么你应该使用Facebook上的stream量的Redux? 这只是一个编程风格的问题:function与非function? 或者问题是在redux方法中的能力/开发工具? 也许缩放? 还是testing? 如果我说,redux对于来自函数式语言的人来说是一种stream量,我是对的吗? 为了回答这个问题,你可以比较实现redux在flux和redux上的动机点的复杂性。 以下是官方的文件格式动机 : 处理乐观的更新( 据我所知,它很难取决于第五点,难以在fbstream量中实现它 ) ? 在服务器上进行渲染( fb flux也可以做到这一点,与redux相比有什么好处? ) 在执行路由转换之前获取数据( 为什么在fb flux中无法实现?有什么好处? ) 热重新加载( React Hot Reload有可能,为什么我们需要重新加载 ? ) 撤销/重做function 还有其他的要点吗 像持续的状态…