Skip to content

Commit a2eebbb

Browse files
committed
fix #1469
1 parent 0746982 commit a2eebbb

File tree

11 files changed

+79
-35
lines changed

11 files changed

+79
-35
lines changed

frameworks/keyed/react-hooks-use-transition/src/main.jsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,14 @@ const listReducer = (state, action) => {
5151
case 'CLEAR':
5252
return { data: [], selected: 0 };
5353
case 'SWAP_ROWS':
54-
return data.length > 998 ? { data: [data[0], data[998], ...data.slice(2, 998), data[1], data[999]], selected } : state;
54+
const newdata = [...data];
55+
if (data.length > 998) {
56+
const d1 = newdata[1];
57+
const d998 = newdata[998];
58+
newdata[1] = d998;
59+
newdata[998] = d1;
60+
}
61+
return { data: newdata, selected };
5562
case 'REMOVE': {
5663
const idx = data.findIndex((d) => d.id === action.id);
5764

frameworks/keyed/react-hooks/src/main.jsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,14 @@ const listReducer = (state, action) => {
5151
case 'CLEAR':
5252
return { data: [], selected: 0 };
5353
case 'SWAP_ROWS':
54-
return data.length > 998 ? { data: [data[0], data[998], ...data.slice(2, 998), data[1], data[999]], selected } : state;
54+
const newdata = [...data];
55+
if (data.length > 998) {
56+
const d1 = newdata[1];
57+
const d998 = newdata[998];
58+
newdata[1] = d998;
59+
newdata[998] = d1;
60+
}
61+
return { data: newdata, selected };
5562
case 'REMOVE': {
5663
const idx = data.findIndex((d) => d.id === action.id);
5764

frameworks/keyed/react-recoil/src/main.jsx

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -134,19 +134,16 @@ const Jumbotron = memo(
134134
]);
135135

136136
const swapRows = useCallback(() => {
137-
setAppState(({ data, selected }) =>
138-
data.length > 998
139-
? {
140-
data: [
141-
data[0],
142-
data[998],
143-
...data.slice(2, 998),
144-
data[1],
145-
data[999],
146-
],
147-
selected,
148-
}
149-
: state
137+
setAppState(({ data, selected }) => {
138+
const newdata = [...data];
139+
if (data.length > 998) {
140+
const d1 = newdata[1];
141+
const d998 = newdata[998];
142+
newdata[1] = d998;
143+
newdata[998] = d1;
144+
}
145+
return { data: newdata, selected };
146+
}
150147
);
151148
}, [setAppState]);
152149

frameworks/keyed/react-redux-hooks-immutable/src/main.jsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,12 @@ const store = createStore((state = initialState, action) => {
5656
return initialState;
5757
case 'SWAP_ROWS': {
5858
return state.updateIn(['data'], data => {
59-
const tmp = data.get(1);
60-
return data.set(1, data.get(998)).set(998, tmp);
59+
if (data.size>998) {
60+
const tmp = data.get(1);
61+
return data.set(1, data.get(998)).set(998, tmp);
62+
} else {
63+
return data;
64+
}
6165
});
6266
}
6367
}

frameworks/keyed/react-redux-hooks/src/main.jsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,11 @@ const store = createStore((state = { data: [], selected: 0 }, action) => {
5252
return { data: [], selected: 0 };
5353
case "SWAP_ROWS": {
5454
const newData = data.slice();
55-
const tmp = newData[1];
56-
newData[1] = newData[998];
57-
newData[998] = tmp;
55+
if (data.length>998) {
56+
const tmp = newData[1];
57+
newData[1] = newData[998];
58+
newData[998] = tmp;
59+
}
5860
return { data: newData, selected };
5961
}
6062
}

frameworks/keyed/react-redux-rematch/src/main.jsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,14 @@ const mainModel = {
108108
SELECT: ({ data }, id) => ({ data, selected: id }),
109109
CLEAR: () => ({ data: [], selected: 0 }),
110110
SWAP_ROWS: ({ data, selected }) => {
111-
return {
112-
data: [data[0], data[998], ...data.slice(2, 998), data[1], data[999]],
113-
selected
114-
};
111+
const newdata = [...data];
112+
if (data.length > 998) {
113+
const d1 = newdata[1];
114+
const d998 = newdata[998];
115+
newdata[1] = d998;
116+
newdata[998] = d1;
117+
}
118+
return { data: newdata, selected };
115119
}
116120
}
117121
};

frameworks/keyed/react-redux/src/main.jsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,15 @@ const store = createStore((state = { data: [], selected: 0 }, action) => {
4848
case 'CLEAR':
4949
return { data: [], selected: 0 };
5050
case 'SWAP_ROWS':
51-
return { data: [data[0], data[998], ...data.slice(2, 998), data[1], data[999]], selected };
52-
}
51+
const newdata = [...data];
52+
if (data.length > 998) {
53+
const d1 = newdata[1];
54+
const d998 = newdata[998];
55+
newdata[1] = d998;
56+
newdata[998] = d1;
57+
}
58+
return { data: newdata, selected };
59+
}
5360
return state;
5461
});
5562

frameworks/keyed/react-rxjs/src/main.jsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,11 @@ const items$ = state(
111111
return init;
112112
case "swap": {
113113
const newData = data.slice();
114-
const tmp = newData[1];
115-
newData[1] = newData[998];
116-
newData[998] = tmp;
114+
if (data.length>998) {
115+
const tmp = newData[1];
116+
newData[1] = newData[998];
117+
newData[998] = tmp;
118+
}
117119
return newData;
118120
}
119121
}

frameworks/keyed/react-tagged-state/src/main.jsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,15 @@ const Main = () => (
9898
selected(0);
9999
}}/>
100100
<Button id="swaprows" title="Swap Rows"
101-
cb={() => data((curr) => curr.length > 998 ? [curr[0], curr[998], ...curr.slice(2, 998), curr[1], curr[999]] : curr)}/>
101+
cb={() => data((cur) => {
102+
const newData = cur.slice();
103+
if (cur.length>998) {
104+
const tmp = newData[1];
105+
newData[1] = newData[998];
106+
newData[998] = tmp;
107+
}
108+
return newData;
109+
})}/>
102110
</div>
103111
</div>
104112
</div>

frameworks/keyed/react-tracked/src/main.jsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,11 @@ const reducer = (state, action) => {
5151
return { data: [], selected: 0 };
5252
case "SWAP_ROWS": {
5353
const newData = data.slice();
54-
const tmp = newData[1];
55-
newData[1] = newData[998];
56-
newData[998] = tmp;
54+
if (data.length>998) {
55+
const tmp = newData[1];
56+
newData[1] = newData[998];
57+
newData[998] = tmp;
58+
}
5759
return { data: newData, selected };
5860
}
5961
}

0 commit comments

Comments
 (0)