redux查询同步是否允许在计算机之间共享url?

redux查询同步是否允许在计算机之间共享url?,redux,redux-query-sync,Redux,Redux Query Sync,我正在尝试实现redux查询同步,但如果我共享具有更新状态的url,则该url将保持默认状态 我已经实现了示例中所示的- 代码中还包含一个PropsRoute实现。您的示例似乎适用于字符串参数。是数组param所选给您带来了麻烦 您在此处分派的操作创建者,changeLocation,没有使用正确的参数。看看您在组件中如何调用它: changeLocation({ location: event.target.name, checked: event.target.checked })

我正在尝试实现redux查询同步,但如果我共享具有更新状态的url,则该url将保持默认状态

我已经实现了示例中所示的-


代码中还包含一个PropsRoute实现。

您的示例似乎适用于
字符串
参数。是
数组
param
所选
给您带来了麻烦

您在此处分派的操作创建者,
changeLocation
,没有使用正确的参数。看看您在组件中如何调用它:

changeLocation({
  location: event.target.name,
  checked: event.target.checked
});
当从URL查询调用它时,它的调用方式如下:

changeLocation([Stockholm, Oslo]);
所以很明显这些不匹配。现有的
changeLocation
操作一次只能处理一个位置,因此无法将
从URL映射到您可以使用的有效负载。您需要创建一个单独的操作

const setLocation = (payload) => ({ type: "setLocation", payload });

我处理
数组
值的第一种方法是为所选
参数实现可选的
stringToValue
valueToString
设置

这是唯一一种有效的方法。当参数设置为默认值时,我无法让它从URL中省略参数。我想知道它是否在使用
==
检查?作为一个黑客解决方案,我在
stringToValue
中添加了一个
filter
,以防止将空字符串添加到locations数组中。但是
selected=
始终存在于URL中

selected: {
  selector: (state) => state.selected,
  action: setLocation,
  stringToValue: (string) => string.split(",").filter(s => !!s),
  valueToString: (value) => value.join(","),
  defaultValue: []
}

这让我很恼火,所以我听从了医生的建议:

注意,您同样可以将与字符串之间的转换分别放在选择器和动作创建者中。
defaultValue
当然也应该是字符串

这种方法效果更好

selected: {
  selector: (state) => state.selected.join(","),
  action: (string) => setLocation(string.split(",")),
  defaultValue: ""
}

随着这些变化


谢谢琳达。我发送的示例是我提到的实现。那不是我的工作

只是想让你知道,由于我的应用程序使用了PropsRoute,我可以使用
历史
道具将状态作为url中的参数推送并共享url。我必须修改代码,以使用url中的参数作为状态(如果可用)。这在选项卡之间起作用。将进行跨机器的测试

this.props.history.push(“/currenturl/”+状态) this.props.history.push(“/currenturl/”+{testobject:{}})

this.props.match.params.testobject

但无法实现redux查询同步

selected: {
  selector: (state) => state.selected.join(","),
  action: (string) => setLocation(string.split(",")),
  defaultValue: ""
}