fish-redux icon indicating copy to clipboard operation
fish-redux copied to clipboard

使用adapter与component, 父组件改变状态, 不能即时更新到子页面上, 热更新之后值才会变化

Open zsfbest opened this issue 5 years ago • 11 comments
trafficstars

image 这里可以监听到, 可以打印出值, 是改变后的

zsfbest avatar Mar 16 '20 02:03 zsfbest

用的是dynamicFlowAdapter

zsfbest avatar Mar 16 '20 04:03 zsfbest

遇到同样的问题,你解决了吗

fantasysea avatar Apr 03 '20 02:04 fantasysea

遇到同样的问题,你解决了吗

并没有, 没有用component了

zsfbest avatar Apr 03 '20 07:04 zsfbest

遇到同样的问题,你解决了吗

并没有, 没有用component了

我整了好久,发现问题在哪里了,但是还不是很明白。

item的buildReducer如果我这样返回是不会更新的

  final ItemMytestState newState = state.clone();
  newState.isDone = !newState.isDone;
  return newState;

这样返回才能变化

  final ItemMytestState newState = state.clone();
  if (state.uniqueId == uniqueId) {
    newState.isDone = !newState.isDone;
    return newState;
  }
  return state;

我的结论就是必须有newState和state 区分开返回才能变化。我的那个功能是全部选择,刚刚是不需要区分的,这是bug吧。

fantasysea avatar Apr 03 '20 08:04 fantasysea

遇到同样的问题,你解决了吗

并没有, 没有用component了

我整了好久,发现问题在哪里了,但是还不是很明白。

item的buildReducer如果我这样返回是不会更新的

  final ItemMytestState newState = state.clone();
  newState.isDone = !newState.isDone;
  return newState;

这样返回才能变化

  final ItemMytestState newState = state.clone();
  if (state.uniqueId == uniqueId) {
    newState.isDone = !newState.isDone;
    return newState;
  }
  return state;

我的结论就是必须有newState和state 区分开返回才能变化。我的那个功能是全部选择,刚刚是不需要区分的,这是bug吧。

你可以试一下看看, 在你第一个的 return newState 之前打印一下newstate.isDone 看看有没有变化

zsfbest avatar Apr 03 '20 10:04 zsfbest

遇到同样的问题,你解决了吗

并没有, 没有用component了

我整了好久,发现问题在哪里了,但是还不是很明白。 item的buildReducer如果我这样返回是不会更新的

  final ItemMytestState newState = state.clone();
  newState.isDone = !newState.isDone;
  return newState;

这样返回才能变化

  final ItemMytestState newState = state.clone();
  if (state.uniqueId == uniqueId) {
    newState.isDone = !newState.isDone;
    return newState;
  }
  return state;

我的结论就是必须有newState和state 区分开返回才能变化。我的那个功能是全部选择,刚刚是不需要区分的,这是bug吧。

你可以试一下看看, 在你第一个的 return newState 之前打印一下newstate.isDone 看看有没有变化

是试那个没有更新的newStatte

zsfbest avatar Apr 03 '20 10:04 zsfbest

遇到同样的问题,你解决了吗

并没有, 没有用component了

我整了好久,发现问题在哪里了,但是还不是很明白。 item的buildReducer如果我这样返回是不会更新的

  final ItemMytestState newState = state.clone();
  newState.isDone = !newState.isDone;
  return newState;

这样返回才能变化

  final ItemMytestState newState = state.clone();
  if (state.uniqueId == uniqueId) {
    newState.isDone = !newState.isDone;
    return newState;
  }
  return state;

我的结论就是必须有newState和state 区分开返回才能变化。我的那个功能是全部选择,刚刚是不需要区分的,这是bug吧。

你可以试一下看看, 在你第一个的 return newState 之前打印一下newstate.isDone 看看有没有变化

是试那个没有更新的newStatte

数据改了,但是我修改page的stateitems列表的数据的时候,也是不刷新,不知道咋回事了。如果点击某一项的status才可以。

fantasysea avatar Apr 03 '20 10:04 fantasysea

遇到同样的问题,你解决了吗

并没有, 没有用component了

我整了好久,发现问题在哪里了,但是还不是很明白。 item的buildReducer如果我这样返回是不会更新的

  final ItemMytestState newState = state.clone();
  newState.isDone = !newState.isDone;
  return newState;

这样返回才能变化

  final ItemMytestState newState = state.clone();
  if (state.uniqueId == uniqueId) {
    newState.isDone = !newState.isDone;
    return newState;
  }
  return state;

我的结论就是必须有newState和state 区分开返回才能变化。我的那个功能是全部选择,刚刚是不需要区分的,这是bug吧。

你可以试一下看看, 在你第一个的 return newState 之前打印一下newstate.isDone 看看有没有变化

是试那个没有更新的newStatte

数据改了,但是我修改page的stateitems列表的数据的时候,也是不刷新,不知道咋回事了。如果点击某一项的status才可以。

我现在发现是component里面的改变会刷新页面, 都是在外部更新数据并不会, 而且如果两个component数据联动也是没有办法实现

zsfbest avatar Apr 03 '20 10:04 zsfbest

遇到同样的问题,你解决了吗

并没有, 没有用component了

我整了好久,发现问题在哪里了,但是还不是很明白。 item的buildReducer如果我这样返回是不会更新的

  final ItemMytestState newState = state.clone();
  newState.isDone = !newState.isDone;
  return newState;

这样返回才能变化

  final ItemMytestState newState = state.clone();
  if (state.uniqueId == uniqueId) {
    newState.isDone = !newState.isDone;
    return newState;
  }
  return state;

我的结论就是必须有newState和state 区分开返回才能变化。我的那个功能是全部选择,刚刚是不需要区分的,这是bug吧。

你可以试一下看看, 在你第一个的 return newState 之前打印一下newstate.isDone 看看有没有变化

是试那个没有更新的newStatte

数据改了,但是我修改page的stateitems列表的数据的时候,也是不刷新,不知道咋回事了。如果点击某一项的status才可以。

我现在发现是component里面的改变会刷新页面, 都是在外部更新数据并不会, 而且如果两个component数据联动也是没有办法实现

遇到的情况和你的一样

fantasysea avatar Apr 03 '20 11:04 fantasysea

遇到同样的问题,你解决了吗

并没有, 没有用component了

我整了好久,发现问题在哪里了,但是还不是很明白。

item的buildReducer如果我这样返回是不会更新的

  final ItemMytestState newState = state.clone();
  newState.isDone = !newState.isDone;
  return newState;

这样返回才能变化

  final ItemMytestState newState = state.clone();
  if (state.uniqueId == uniqueId) {
    newState.isDone = !newState.isDone;
    return newState;
  }
  return state;

我的结论就是必须有newState和state 区分开返回才能变化。我的那个功能是全部选择,刚刚是不需要区分的,这是bug吧。

component 要使用with PrivateReducerMixin,reducer才会只触发当前 item

zhouxuan82 avatar Jun 11 '20 15:06 zhouxuan82

遇到同样的问题,你解决了吗

并没有, 没有用component了

我整了好久,发现问题在哪里了,但是还不是很明白。 item的buildReducer如果我这样返回是不会更新的

  final ItemMytestState newState = state.clone();
  newState.isDone = !newState.isDone;
  return newState;

这样返回才能变化

  final ItemMytestState newState = state.clone();
  if (state.uniqueId == uniqueId) {
    newState.isDone = !newState.isDone;
    return newState;
  }
  return state;

我的结论就是必须有newState和state 区分开返回才能变化。我的那个功能是全部选择,刚刚是不需要区分的,这是bug吧。

你可以试一下看看, 在你第一个的 return newState 之前打印一下newstate.isDone 看看有没有变化

是试那个没有更新的newStatte

数据改了,但是我修改page的stateitems列表的数据的时候,也是不刷新,不知道咋回事了。如果点击某一项的status才可以。

没有刷新的问题,要检查你需要刷新的组件他的state有没有变化(检查变化的默认方式是引用是否变化)。

zhouxuan82 avatar Jun 12 '20 02:06 zhouxuan82