小编Oll*_*liM的帖子

如何在backbone.js应用程序中保持干净的浏览器历史记录?

我的backbone.js有三个视图:

  1. 类别清单
  2. 类别中的项目列表
  3. 个别项目的表格

我正在使用backbone.js路由器在这些视图之间导航.用户在应用程序中流动1 < - > 2,2 < - > 3和3 - > 1.用户可以使用浏览器后退和前进按钮来回导航,这是想要的行为.深度链接到任何项目也有效.

问题是我想保持历史清洁.这是一个示例用法流程:

  • 用户打开类别列表.历史:"类别列表"(正确)
  • 用户选择"我的类别".历史:"我的类别"<"类别列表"(正确)
  • 用户选择"我的项目".历史:"我的项目"<"我的类别"<"类别列表"(正确)
  • 用户填写表格并保存,重定向到"类别列表".历史:"类别列表"<"我的项目"<"我的类别"<"类别列表"(应该只是"类别列表")

另一个例子:

  • 用户打开"我的类别"的URL
  • 用户按下主页按钮.历史:"类别列表"<"我的类别",应该是"类别列表"

关于如何以干净的方式实现这一点的任何想法?

browser-history backbone.js

10
推荐指数
1
解决办法
9222
查看次数

React-redux:渲染是否总是发生在与调度动作相同的时间内?

在我的react-redux应用程序中,我有一个受控的文本输入.每次组件更改值时,它都会调度一个操作,最后,该值将通过redux循环返回并呈现.

在下面的示例中,这很有效,但在实践中,我遇到了一个问题,即渲染从动作调度异步发生,输入失去光标位置.为了演示这个问题,我添加了另一个显式放入延迟的输入.在单词中间添加一个空格会导致光标在异步输入中跳过.

我有两个关于此的理论,并想知道哪一个是真的:

  • 这应该工作,但我的生产应用程序中的某个地方有一个错误导致延迟
  • 它在简单示例中工作的事实只是运气和react-redux并不能保证渲染会同步发生

哪一个是对的?

工作范例:

http://jsbin.com/doponibisi/edit?html,js,output

const INITIAL_STATE = {
  value: ""
};

const reducer = (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case 'SETVALUE':
      return Object.assign({}, state, { value: action.payload.value });
    default:
      return state;
  }
};

const View = ({
  value,
  onValueChange
}) => (
  <div>
    Sync: <input value={value} onChange={(e) => onValueChange(e.target.value)} /><br/>
    Async: <input value={value} onChange={(e) => { const v = e.target.value; setTimeout(() => onValueChange(v), 0)}} />
  </div>
);

const mapStateToProps = (state) => …
Run Code Online (Sandbox Code Playgroud)

redux redux-saga

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

Bacon.js onValue()链

为什么建筑像

$("#clickme").asEventStream('click').onValue(callback1).onValue(callback2);
Run Code Online (Sandbox Code Playgroud)

不行,但这个

var promise = $("#clickme").asEventStream('click');
promise.onValue(callback1);
promise.onValue(callback2);
Run Code Online (Sandbox Code Playgroud)

作品.

onValue方法不返回对象的引用吗?有什么目的吗?

javascript bacon.js

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