Skip to content

Instantly share code, notes, and snippets.

View itaditya's full-sized avatar
🎯
Focusing

Aditya Agarwal itaditya

🎯
Focusing
View GitHub Profile
@itaditya
itaditya / Diet-App.jsx
Last active October 3, 2020 05:49
(Blog) Build a Redux hooked app
export default function App() {
const diet = useSelector((state) => state.diet);
const dispatch = useDispatch();
function handleVegToggle() {
dispatch({
type: ACTIONS.CHANGE_DIET,
});
}
@itaditya
itaditya / useLoadFoodData-hooks.js
Last active October 5, 2020 14:23
(Blog) Build a Redux hooked app
function useLoadFoodData() {
const [stateAPIStatus, setAPIStatus] = useState('idle');
const dispatch = useDispatch();
useEffect(() => {
setAPIStatus('loading');
loadFoodData()
.then((data) => {
dispatch({
type: ACTIONS.LOAD_MENU,
[{"name":"hackerrank_r_admin_base_layout","path":"public/assets/hackerrank_r_admin_base_layout-49646c5f27.js","size":4185,"gzipSize":1728},{"name":"hackerrank_r_advanced_settings","path":"public/assets/hackerrank_r_advanced_settings-e0275897a8.js","size":25301,"gzipSize":7100},{"name":"hackerrank_r_app","path":"public/assets/hackerrank_r_app-d1c2dd3dfc.js","size":105025,"gzipSize":31890},{"name":"hackerrank_r_auth","path":"public/assets/hackerrank_r_auth-aa2a575bfb.js","size":14519,"gzipSize":3894},{"name":"hackerrank_r_billing_settings","path":"public/assets/hackerrank_r_billing_settings-75165607d7.js","size":18635,"gzipSize":6206},{"name":"hackerrank_r_calendar","path":"public/assets/hackerrank_r_calendar-524d5417a3.js","size":9407,"gzipSize":3132},{"name":"hackerrank_r_career_fair_faq","path":"public/assets/hackerrank_r_career_fair_faq-53ecffa0d4.js","size":3500,"gzipSize":1360},{"name":"hackerrank_r_career_fair","path":"public/assets/hackerrank_r_career_fair-cbc7612c28.js","size":36356,"gzipSize":9577},{"
@itaditya
itaditya / positional-plus-named.js
Created August 1, 2020 14:46
(Blog) Why named arguments are better than positional arguments
// request with url as positional arg and options as named args.
fetch('https://google.com', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
});
// basic GET requests with just positional args
fetch('https://google.com');
@itaditya
itaditya / final-my-custom-parseInt.js
Created August 1, 2020 14:44
(Blog) Why named arguments are better than positional arguments
function myCustomParseInt({ item, radix } = {}) {
return parseInt(item, radix);
}
@itaditya
itaditya / destructuring.js
Created August 1, 2020 14:42
(Blog) Why named arguments are better than positional arguments
// positional args
function myCustomParseInt(item, radix) {
return parseInt(item, radix);
}
// old implementation of named args
function myCustomParseInt(objArgs) {
return parseInt(objArgs.item, objArgs.radix);
}
@itaditya
itaditya / greet-named-args.js
Last active August 9, 2020 07:28
(Blog) Why named arguments are better than positional arguments
// With positional args we had to add a null in between
function greetPos(firstName, middleName, lastName) {}
greetPos('Aditya', null, 'Agarwal');
// With named args you just provide firstName & lastName.
function greetNamed({ firstName, middleName, lastName } = {}) {}
greetNamed({ firstName: 'Aditya', lastName 'Agarwal' });
@itaditya
itaditya / named-args-usage.js
Last active August 1, 2020 14:44
(Blog) Why named arguments are better than positional arguments
const numbers = ['1', '4', '8', '10'];
const result = numbers.map((item, index) => myCustomParseInt({ item, index }));
console.log(result); // [ 1, 4, 8, 10 ]
@itaditya
itaditya / naive-my-custom-parseInt.js
Last active August 8, 2020 04:43
(Blog) Why named arguments are better than positional arguments
// Implementation
function myCustomParseInt(objArgs) {
return parseInt(objArgs.item, objArgs.radix);
}
// Usage
const num = myCustomParseInt({ item: '100', radix: 10 });
@itaditya
itaditya / parseInt-bug.js
Created August 1, 2020 14:33
(Blog) Why named arguments are better than positional arguments
const numbers = ['1', '4', '8', '10'];
console.log(numbers.map(parseInt));
// You might think the result would be-
[1, 4, 8, 10]
// Here's the actual output-
[ 1, NaN, NaN, 3 ]