redux查询同步是否允许在计算机之间共享url?
我正在尝试实现redux查询同步,但如果我共享具有更新状态的url,则该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 })
代码中还包含一个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: ""
}