标签: flux

ReactJS + Flux - 如何实现toast/notifications?

我正在努力了解Flux和Reactjs.

考虑以下非常简单的场景:

你有一个输入很少的表格.当用户提交表单时,

ActionCreator.publishAnnouncement(this.state.announcement);
Run Code Online (Sandbox Code Playgroud)

在我的表单组件中调用.这是publishAnnouncement方法的样子:

var publishAnnouncement = function (announcement) {
  AnnouncementAPI.publishAnnouncement(
    announcement,
    successCallback,
    failureCallback
  )
};
Run Code Online (Sandbox Code Playgroud)

AnnouncementAPI只是一个AJAX http POST调用的包装器.这需要两次回调 - 成功和失败.

现在:我需要在屏幕上显示通知/吐司 - 表示成功或失败. 你会怎么用Flux的方式做到这一点?

我正在考虑创建Notification组件并在我的表单中呈现它.如下:

<Notification title={this.state.notification.title} message={this.state.notification.title} visible={this.state.notification.visibility}  // ?? onTimeExceeded ??     />
Run Code Online (Sandbox Code Playgroud)

但是我该如何处理这些回调呢?我应该创建监听ANNOUNCEMENT_PUBLISHING_SUCCEEDED和ANNOUNCEMENT_PUBLISHING_FAILED事件的NotificationStore吗?为了对这些事件做出反应,商店会发出CHANGE事件,从而更新我的通知.

但即使我这样做,我应该如何指示我的通知显示/隐藏?或者更糟糕的是,2秒后出现并隐藏?

我在GitHub上看到很少的组件,每个组件都使用refs等,我个人不喜欢.

总结一下: 你会如何实现这个?或许这样的项目存在?如果是这样,我在哪里可以找到它?

javascript flux reactjs reactjs-flux

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

如何在.net MVC中使用Flux和事件发射器?

我正在尝试学习Flux模式.

我学会了使用React和.net MVC并将其渲染到服务器端.

我想学习Flux,但所有教程都使用节点js.

我不使用节点.

我不知道如何实现Event Emitter部分,因为它使用节点功能.

https://www.codementor.io/reactjs/tutorial/react-js-flux-architecture-tutorial

下降约1/3:

"事件发射器 - 事件发射器负责在存储完成任何数据操作后通知订户.相反,它还需要能够为特定事件注册观察者.我们将在todo应用程序中使用Node的事件发射器".

鉴于Flux只是一种模式,在没有节点的情况下,我可以使用.net MVC来处理Event Emitter部分吗?

感谢,谢谢.

asp.net-mvc flux node.js eventemitter reactjs

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

同构反应中的实时环境变量

我已经在这个回购中基于入门套件松散地构建了一个同构的React应用程序.它使用webpack来构建生产代码.

事实上,我需要将服务器上的一些环境变量的值暴露给浏览器中的客户端代码,而无需重建生产代码.我希望能够更改env变量的值,并让它在下一页刷新客户端的效果,而不必重建任何东西.我不想让测试复杂化.

我找到了一些解决方案,其中没有一个很好:

  1. 使用DefinePlugin for webpack将某些环境变量的值硬编码到生产代码中.类似于此处概述的内容
  2. 构建API只是为了将env变量拉入客户端.
  3. 编写一个特殊的.js文件,该文件位于webpack系统之外.此文件将被模板化,以便在将其提供给客户端之前进行修改.可能要求env变量值存储在'window'或其他东西上的特殊全局变量中.

这些方法的问题:

  1. 被拒绝.这不符合我的要求.如果我更改env变量的值,我需要重建代码.
  2. 不必要的复杂.我不需要这个API用于其他任何事情.一个完整的API只是为了提供很少改变的2或3个值?需要复杂性来确保在加载时从API ASAP中提取值.
  3. 最近,但有点粗糙.如果我可以避免它,我真的不想去webpack/React/Flux系统之外.在窗口对象上创建特殊的全局变量会起作用,但会为测试使用这些全局变量的组件/存储/操作带来复杂性.

我过去做过2和3,从来没有真正满足这些解决方案.

有什么建议?这似乎应该是一个常见/解决的问题.也许我只是在思考它,3是要走的路.

javascript flux reactjs webpack isomorphic-javascript

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

Reactjs:作为道具访问时未定义的键

工具:Reactjs 0.14.0 Vanilla Flux

我需要唯一标识符有两个原因:

  1. 儿童和解
  2. 跟踪点击的孩子

所以,假设我有一个如下所示的消息列表:

[
      {
        id: 1241241234,  <-----The unique id is kept here
        authorName:"Nick"
        text:"Hi!"
      },
      ...
]
Run Code Online (Sandbox Code Playgroud)

现在我使用"Array.prototype.map()" 在所有者组件内创建"ownee"组件(MessageListItem)MessageSection

function getMessageListItem)(message) {

  return (
    <MessageListItem key={message.id} message={message}/>
  );
}

var MessageSection = React.createClass({
   render: function(){
       var messageListItems = this.state.messages.map(getMessageListItem);
       <div>
           {messageListItems }
       </div>
   }
});
Run Code Online (Sandbox Code Playgroud)

但是在MessageListItem中未定义this.props.key,即使我知道在传递它时定义的事实.

var ConvoListItem = React.createClass({
  render: function() {
    console.log(this.props.key); //Undefined
  }
});
Run Code Online (Sandbox Code Playgroud)

我猜有一个原因是React没有让"关键"用作道具.

题:

如果我不能使用密钥作为支柱 - 那么在动态包含状态的子元素列表上处理密钥和设置唯一标识符的二元性需求的正确方法是什么?

javascript flux reactjs reactjs-flux

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

Flux实施分析

我正在研究反应生态系统,我来自AngularJS世界,我不知道应该使用哪种通量实现...

考虑到我喜欢angularjs(1x)的MV*结构,谁能解释什么是最好的?

我将重点关注:

  1. 他们之间的差异
  2. 目标
  3. 学习曲线
  4. 用法分享
  5. 可测性
  6. 可扩展性
  7. 遵守新标准(包括ES6和Web开发趋势)

我找到了很多资源,但我还是有很多疑问!

提前致谢

web-applications flux single-page-application reactjs

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

Redux:组织容器,组件,动作和减速器

问题:

在大型React/Redux应用程序中组织容器,组件,操作和减速器的最可维护和建议的最佳实践是 什么?

我的看法:

目前的趋势似乎是围绕相关的容器组件组织redux抵押品(行动,减少器,传奇......).例如

/src
    /components
        /...
    /contianers
        /BookList
            actions.js
            constants.js
            reducer.js
            selectors.js
            sagas.js
            index.js
        /BookSingle
            actions.js
            constants.js
            reducer.js
            selectors.js
            sagas.js
            index.js        
    app.js
    routes.js
Run Code Online (Sandbox Code Playgroud)

这很棒!虽然这种设计似乎存在一些问题.

问题:

当我们需要访问时actions,selectors或者sagas从另一个容器访问时,它似乎是一种反模式.假设我们有一个/App带有reducer/state 的全局容器,它存储我们在整个应用程序中使用的信息,例如类别和枚举.继上面的例子之后,使用状态树:

{
    app: {
        taxonomies: {
            genres: [genre, genre, genre],
            year: [year, year, year],
            subject: [subject,subject,subject],
        }   
    }
    books: {
        entities: {
            books: [book, book, book, book],
            chapters: [chapter, chapter, chapter],
            authors: [author,author,author],
        }
    },
    book: {
        entities: {
            book: book,
            chapters: …
Run Code Online (Sandbox Code Playgroud)

javascript architecture flux reactjs redux

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

如何在另一个动作成功后调用redux动作?

所以我有一个auth相关的reducer设置如下:

export default function reducer(state = initialState, action = {}) {
  switch (action.type) {
    case LOAD:
      return {
        ...state,
        loading: true,
      }
    case LOAD_SUCCESS:
      return {
        ...state,
        loading: false,
        loaded: true,
        jwt: action.jwt,
      }
    case LOAD_FAIL:
      return {
        ...state,
        loading: false,
        loaded: false,
        error: true,
        errorMessage: action.error,
      }
    case LOGIN:
      return {
        ...state,
        loaded: false,
        loggingIn: true,
      }
    case LOGIN_SUCCESS:
      return {
        ...state,
        loaded: true,
        loggingIn: false,
        jwt: jwtDecode(action.result.token),
      }
    case LOGIN_FAIL:
      return {
        ...state,
        loggingIn: false,
        user: …
Run Code Online (Sandbox Code Playgroud)

functional-programming flux reactjs redux react-redux

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

将路由器参数转换为Vuex操作

我想将路由器参数传递给Vuex动作,而不必为大型表格中的每个动作获取它们,如下所示:

edit_sport_type({ rootState, state, commit }, event) {
  const sportName = rootState.route.params.sportName <-------
  const payload = {sportName, event}                 <-------
  commit(types.EDIT_SPORT_TYPE, payload)
},
Run Code Online (Sandbox Code Playgroud)

或者像这样,

edit_sport_type({ state, commit, getters }, event) {
  const payload = {sportName, getters.getSportName}  <-------
  commit(types.EDIT_SPORT_TYPE, payload)
},
Run Code Online (Sandbox Code Playgroud)

或者更糟糕的是:从组件道具中抓取参数并将其传递给每次发送的派遣.

有没有办法为大量行动抽象出来?

或者也许是突变本身的替代方法?

javascript flux vue.js vuex

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

如果直接在Redux reducer中修改状态会发生什么?

我正在看这个Redux教程,其中讨论了以下减速器:

function visibilityFilter(state = 'SHOW_ALL', action) {
    return action.type === 'SET_VISIBILITY_FILTER' ?
        action.filter :
        state
}

function todos(state = [], action) {
    switch (action.type) {
        case 'ADD_TODO':
            return state.concat([{
                text: action.text, completed: false
            }]);
        case 'TOGGLE_TODO':
            return state.map((todo, index) =>
                action.index === index ?
                    { text: todo.text, completed: !todo.completed } :
                    todo
            )
        default: return state;
    }
}

function todoApp(state = {}, action) {
    return {
        todos: todos(state.todos, action),
        visibilityFilter: visibilityFilter(state.visibilityFilter, action)
    };
}
Run Code Online (Sandbox Code Playgroud)

它做的事情清楚,但是我不明白为什么它的state.concat …

javascript immutability flux redux

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

Java Flux 中的延迟增加

我有一个代码,我可以在循环中执行一段逻辑,并使用 Flux 之间有一些延迟。像这样的事情,

Flux.defer(() -> service.doSomething())
            .repeatWhen(v -> Flux.interval(Duration.ofSeconds(10)))
            .map(data -> mapper(data)) //map data
            .takeUntil(v -> shouldContinue(v)) //checks if the loop can be terminated
            .onErrorStop();
Run Code Online (Sandbox Code Playgroud)

现在,我想要增量延迟。这意味着,在前 5 分钟内,每次执行之间的延迟可能为 10 秒。然后,在接下来的 10 分钟内,延迟可以是 30 秒。并且,此后每次执行之间的延迟可以是一分钟。

我如何使用 Flux 来实现这一目标?

提前致谢。

java delay reactive-programming flux spring-webflux

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