Latihan Redux
Wed Mar 20 2024 03:53:30 GMT+0000 (Coordinated Universal Time)
Saved by
@fazmi322
//File dataSlice.jsx (Redux)
import { createSlice } from '@reduxjs/toolkit';
const initialState = [];
export const dataSlice = createSlice({
name: 'data',
initialState,
reducers: {
saveToLocal: (state) => {
localStorage.setItem('data', JSON.stringify(state));
},
getFromLocal: (state) => {
const localData = JSON.parse(localStorage.getItem('data'));
if (localData) {
return localData;
}
return state;
},
},
});
export const { saveToLocal, getFromLocal, addData } = dataSlice.actions;
export default dataSlice.reducer;
//File input.jsx
const handleSubmit = async () => {
const uri = encodeURIComponent(inputValue.toString());
const url = "https://cleanuri.com";
const shortenAPI = `${url}/api/v1/shorten`;
if(uri!==""){
try {
const res = await fetch(shortenAPI, {
method: "POST",
body: `url=${uri}`,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
});
if (!res.ok) {
throw new Error(`HTTP error! status: ${res.status}`);
}
const dataJSON = await res.json();
console.log(dataJSON)
if(dataJSON?.result_url){
const newData = { url: inputValue, shortLink: dataJSON.result_url };
setData([...data, newData]);
console.log(newData);
// localStorage.setItem('data', JSON.stringify([newData]))
dispatch(saveToLocal(newData))
setInputValue("");
}
} catch (error) {
console.error("Fetch error:", error);
}
}
else{
setAlertInput(!alertInput)
}
};
content_copyCOPY
Comments