質問編集履歴

2

React最小構成

2021/09/05 09:34

投稿

haruyasu
haruyasu

スコア8

test CHANGED
@@ -1 +1 @@
1
- NextJSのファイルアップロード実装について(APi送信)
1
+ ReNextJSのファイルアップロード実装について(APi送信)
test CHANGED
@@ -230,7 +230,7 @@
230
230
 
231
231
 
232
232
 
233
- Reactの最小構成で試してみましバックエンドのデータが更されません
233
+ Reactの最小構成で試した、データが更されました
234
234
 
235
235
 
236
236
 
@@ -266,29 +266,31 @@
266
266
 
267
267
 
268
268
 
269
+ const res = await axios.patch(
270
+
269
- const apiRes = await fetch('http://localhost:8000/api/v1/auth/users/me/', {
271
+ 'http://localhost:8000/api/v1/auth/users/me/',
270
-
271
- method: 'PATCH',
272
-
273
- headers: {
274
-
275
- Authorization: `Token xxxxx`,
276
-
277
- 'Content-Type': 'multipart/form-data',
278
-
279
- },
280
272
 
281
273
  formData,
282
274
 
275
+ {
276
+
277
+ headers: {
278
+
279
+ 'Content-Type': 'multipart/form-data',
280
+
281
+ Authorization: `Token xxx`,
282
+
283
- })
283
+ },
284
+
284
-
285
+ }
286
+
285
-
287
+ )
286
-
288
+
289
+
290
+
287
- const data = await apiRes.json()
291
+ console.log(res.status)
288
-
289
-
290
-
292
+
291
- console.log('api', data)
293
+ console.log(res.data)
292
294
 
293
295
  }
294
296
 

1

最小構成でも試してみました。

2021/09/05 09:33

投稿

haruyasu
haruyasu

スコア8

test CHANGED
File without changes
test CHANGED
@@ -221,3 +221,111 @@
221
221
 
222
222
 
223
223
  ぜひともアドバイスをよろしくお願いいたします。
224
+
225
+
226
+
227
+
228
+
229
+ ■追記
230
+
231
+
232
+
233
+ Reactの最小構成でも試してみましたが、バックエンドのデータが変更されません。
234
+
235
+
236
+
237
+
238
+
239
+ ```js
240
+
241
+ import { useState } from 'react'
242
+
243
+
244
+
245
+ function App() {
246
+
247
+ const [avatar, setAvatar] = useState(null)
248
+
249
+
250
+
251
+ const editAvatar = () => {
252
+
253
+ const fileInput = document.getElementById('avatarInput')
254
+
255
+ fileInput?.click()
256
+
257
+ }
258
+
259
+
260
+
261
+ const sendAbatar = async () => {
262
+
263
+ var formData = new FormData()
264
+
265
+ formData.append('avatar', avatar)
266
+
267
+
268
+
269
+ const apiRes = await fetch('http://localhost:8000/api/v1/auth/users/me/', {
270
+
271
+ method: 'PATCH',
272
+
273
+ headers: {
274
+
275
+ Authorization: `Token xxxxx`,
276
+
277
+ 'Content-Type': 'multipart/form-data',
278
+
279
+ },
280
+
281
+ formData,
282
+
283
+ })
284
+
285
+
286
+
287
+ const data = await apiRes.json()
288
+
289
+
290
+
291
+ console.log('api', data)
292
+
293
+ }
294
+
295
+
296
+
297
+ return (
298
+
299
+ <>
300
+
301
+ <div>Avatar</div>
302
+
303
+ <input
304
+
305
+ type="file"
306
+
307
+ id="avatarInput"
308
+
309
+ hidden={true}
310
+
311
+ onChange={(e) => setAvatar(e.target.files[0])}
312
+
313
+ />
314
+
315
+ <div onClick={editAvatar}>アバターを変更</div>
316
+
317
+ <div onClick={sendAbatar}>登録する</div>
318
+
319
+ </>
320
+
321
+ )
322
+
323
+ }
324
+
325
+
326
+
327
+ export default App
328
+
329
+
330
+
331
+ ```