在RelayJS中重新排序連接的最佳方式是什麼?爲重新排序的連接創建樂觀響應
在我的用戶界面中,我允許我的用戶「交換」兩個項目,但在這個項目周圍創建變化有點棘手。
我現在正在做的是天真的方式,即使用FIELDS_CHANGE
來改變我的節點本身。
它的工作原理,但問題是我似乎無法爲它寫一個樂觀的更新。我能夠將一個ID列表傳遞給我的graphql服務器,但這對於樂觀更新不起作用,因爲它期望實際的數據。
所以我想我必須嘲笑我的'連接'界面,但不幸的是,它仍然無法正常工作。我'複製'我的重新排序節點getOptimisticResponse,但它似乎被忽略。數據與實際的服務器響應相匹配。 (IDS簡體)
原:
{
item: {
edges: {
{cursor: 1, node: {id:2}}
{cursor: 2, node: {id:1}}
}
}
}
(什麼都不做): 樂觀的回覆:
{
item: {
edges: {
node: {id:1}
node: {id:2}
}
}
}
服務器的回覆:
{
item: {
edges: {
{cursor: 1, node: {id:1}}
{cursor: 2, node: {id:2}}
}
}
}
是怎麼回事?它是等價的(除了遊標),即使我添加了遊標,它仍然不起作用。
我在做什麼錯?還有一種更簡單的方法來模擬我的ID到連接?
另外,有沒有辦法讓這些數據零碎?現在,重新排序兩個項目重新請求整個列表,因爲我的突變配置。我想我可以用RANGE_ADD
和RANGE_DELETE
來做'模擬交換',但是有沒有更簡單的方法來做到這一點?