더 나은 React 코드를 작성하기 위한 JavaScript 개념
12880 단어 reactpatternscleancodejavascript
객체 분해
솔직히 말해서, 이 설탕이 없는 전문적인 React 코드베이스를 본 적이 없습니다. 코드 간결성을 크게 향상시킬 수 있는 간단한 개념입니다. 아이디어는 간단합니다. 이름이 구조화될 객체의 이름과 일치하고 미러링하는 이름과 동일한 값을 유지하는 변수를 작성하십시오.
let {foo, baz} = {foo: 1, bar: "Leave me out", baz: 2}
console.log(foo, baz) // -> 1, 2
이 속성은 React에서 주로 구성 요소 prop 또는 state의 변수를 할당하는 데 사용되므로 props[dot]this, state[dot]that에 대한 반복 호출을 방지합니다. 이 아이디어를 얻으시기 바랍니다. 😆
배열을 구조화하는 경우에도 동일하게 적용되지만 배열 요소의 인덱스는 작업이 실행되는 방식을 결정합니다.
조건부 실행
더 자주 우리는 주어진 기준에 따라 실행하고 싶은 로직을 가지고 있습니다. 간단한 if-else 문을 사용하면 충분하지만 React 개발자는 대신 && 연산자를 선호합니다. 아래 코드는 표현식이 'true'를 반환하는 경우 콘솔에 'congrats'를 기록합니다.
const isAdult = (age) => age >= 18
isAdult(18) && console.log('Congrats!!!') // 'congrats'
스프레드 연산자
React 코드베이스에서 종종 컴포넌트에 소품을 전달하는 데 스프레드 연산자가 사용되는 것을 볼 수 있습니다. 이는 종종 편리하기 때문입니다.
스프레드 연산자의 간단한 사용 사례는 함수에 임의의 인수를 전달하는 것입니다. 일련의 숫자에서 '평균'을 계산하는 방법은 간단합니다. 스프레드 연산자를 활용하여 이를 쉽게 만들 수 있습니다.
const calc_mean = (...series) => series.reduce((sum, n) => sum + n, 0) / series.length;
const mean = calc_mean(2,4,6,8)
console.log(mean) // 5
확산 연산자를 사용하여 임의 길이의 인수에서 평균을 평가할 수 있습니다.
Array.prototype.reduce()로 병합
무모해서 '납작하다'라는 단어를 선택했는데 더 좋은게 떠오르지 않으니 용서해주세요 😱
그러나 의도는 컬렉션을 단일 출력으로 줄이려는 것입니다. 예를 들어 새 직장에서 주어진 '고객' 샘플에서 새로 배송된 제품의 퍼센트 리뷰를 찾는 임무를 받았다고 가정해 보겠습니다.
let customers = [
{category: 'happy', count: 1200},
{category: 'sad', count: 204},
{category: 'indifferent', count: 25},
];
// compute total from customers list
let total = customers.reduce((sum, {count}) => sum + count, 0)
// optional: proceed to compute percent for all categories
let customer_reviews = customers.map(customer => {
let percent = customer.count / total * 100
return {...customer, percent: percent.toFixed(2) + '%'}
})
console.log(customer_reviews)
이제 평균 리뷰 비율이 있는 고객 목록이 있습니다.
고차 함수
여기서 논의된 고차 함수의 범주에는 함수를 반환하는 함수가 포함됩니다. 코드를 간결하게 만들고 재사용 가능한 논리를 쉽게 추상화할 수 있기 때문입니다. 예를 들어 다른 컬렉션을 기반으로 컬렉션을 필터링하고 싶다고 가정해 보겠습니다.
let invite_ids = [ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
let friends = [{name: 'sam', id: 1}, {name: 'jon', id: 13}, {name: 'snow', id: 10}]
Fun Fact: The array, invite_ids is actually a fibonacci series 😉
이제 초대 ID 목록에서 ID를 찾을 수 있는 친구만 파티에 참석하기를 원합니다. 어떻게 해야 합니까?
const filter_invites = (ids) => ({id}) => ids.includes(id)
// now we can do this...
let my_invites = friends.filter(filter_invites(invite_ids))
console.log(my_invites) // [{name: 'sam', id: 1}, {name: 'jon', id: 13}]
이제 가독성을 유지하면서 이 로직을 얼마나 간결하고 간략하게 구현했는지 주목하십시오. 필터링을 수행하는 함수는 재사용 및/또는 테스트를 위해 추상화될 수도 있습니다.
템플릿 리터럴
템플릿 리터럴은 멋지고 본질적으로 문자열과 비슷하지만 더 많은 기능이 있습니다. 매우 자주 표현식 및 기타 코드 관련 논리를 포함하려는 위치에서 사용됩니다.
let {foo, baz} = {foo: 1, bar: "Leave me out", baz: 2}
console.log(foo, baz) // -> 1, 2
더 자주 우리는 주어진 기준에 따라 실행하고 싶은 로직을 가지고 있습니다. 간단한 if-else 문을 사용하면 충분하지만 React 개발자는 대신 && 연산자를 선호합니다. 아래 코드는 표현식이 'true'를 반환하는 경우 콘솔에 'congrats'를 기록합니다.
const isAdult = (age) => age >= 18
isAdult(18) && console.log('Congrats!!!') // 'congrats'
스프레드 연산자
React 코드베이스에서 종종 컴포넌트에 소품을 전달하는 데 스프레드 연산자가 사용되는 것을 볼 수 있습니다. 이는 종종 편리하기 때문입니다.
스프레드 연산자의 간단한 사용 사례는 함수에 임의의 인수를 전달하는 것입니다. 일련의 숫자에서 '평균'을 계산하는 방법은 간단합니다. 스프레드 연산자를 활용하여 이를 쉽게 만들 수 있습니다.
const calc_mean = (...series) => series.reduce((sum, n) => sum + n, 0) / series.length;
const mean = calc_mean(2,4,6,8)
console.log(mean) // 5
확산 연산자를 사용하여 임의 길이의 인수에서 평균을 평가할 수 있습니다.
Array.prototype.reduce()로 병합
무모해서 '납작하다'라는 단어를 선택했는데 더 좋은게 떠오르지 않으니 용서해주세요 😱
그러나 의도는 컬렉션을 단일 출력으로 줄이려는 것입니다. 예를 들어 새 직장에서 주어진 '고객' 샘플에서 새로 배송된 제품의 퍼센트 리뷰를 찾는 임무를 받았다고 가정해 보겠습니다.
let customers = [
{category: 'happy', count: 1200},
{category: 'sad', count: 204},
{category: 'indifferent', count: 25},
];
// compute total from customers list
let total = customers.reduce((sum, {count}) => sum + count, 0)
// optional: proceed to compute percent for all categories
let customer_reviews = customers.map(customer => {
let percent = customer.count / total * 100
return {...customer, percent: percent.toFixed(2) + '%'}
})
console.log(customer_reviews)
이제 평균 리뷰 비율이 있는 고객 목록이 있습니다.
고차 함수
여기서 논의된 고차 함수의 범주에는 함수를 반환하는 함수가 포함됩니다. 코드를 간결하게 만들고 재사용 가능한 논리를 쉽게 추상화할 수 있기 때문입니다. 예를 들어 다른 컬렉션을 기반으로 컬렉션을 필터링하고 싶다고 가정해 보겠습니다.
let invite_ids = [ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
let friends = [{name: 'sam', id: 1}, {name: 'jon', id: 13}, {name: 'snow', id: 10}]
Fun Fact: The array, invite_ids is actually a fibonacci series 😉
이제 초대 ID 목록에서 ID를 찾을 수 있는 친구만 파티에 참석하기를 원합니다. 어떻게 해야 합니까?
const filter_invites = (ids) => ({id}) => ids.includes(id)
// now we can do this...
let my_invites = friends.filter(filter_invites(invite_ids))
console.log(my_invites) // [{name: 'sam', id: 1}, {name: 'jon', id: 13}]
이제 가독성을 유지하면서 이 로직을 얼마나 간결하고 간략하게 구현했는지 주목하십시오. 필터링을 수행하는 함수는 재사용 및/또는 테스트를 위해 추상화될 수도 있습니다.
템플릿 리터럴
템플릿 리터럴은 멋지고 본질적으로 문자열과 비슷하지만 더 많은 기능이 있습니다. 매우 자주 표현식 및 기타 코드 관련 논리를 포함하려는 위치에서 사용됩니다.
const calc_mean = (...series) => series.reduce((sum, n) => sum + n, 0) / series.length;
const mean = calc_mean(2,4,6,8)
console.log(mean) // 5
무모해서 '납작하다'라는 단어를 선택했는데 더 좋은게 떠오르지 않으니 용서해주세요 😱
그러나 의도는 컬렉션을 단일 출력으로 줄이려는 것입니다. 예를 들어 새 직장에서 주어진 '고객' 샘플에서 새로 배송된 제품의 퍼센트 리뷰를 찾는 임무를 받았다고 가정해 보겠습니다.
let customers = [
{category: 'happy', count: 1200},
{category: 'sad', count: 204},
{category: 'indifferent', count: 25},
];
// compute total from customers list
let total = customers.reduce((sum, {count}) => sum + count, 0)
// optional: proceed to compute percent for all categories
let customer_reviews = customers.map(customer => {
let percent = customer.count / total * 100
return {...customer, percent: percent.toFixed(2) + '%'}
})
console.log(customer_reviews)
이제 평균 리뷰 비율이 있는 고객 목록이 있습니다.
고차 함수
여기서 논의된 고차 함수의 범주에는 함수를 반환하는 함수가 포함됩니다. 코드를 간결하게 만들고 재사용 가능한 논리를 쉽게 추상화할 수 있기 때문입니다. 예를 들어 다른 컬렉션을 기반으로 컬렉션을 필터링하고 싶다고 가정해 보겠습니다.
let invite_ids = [ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
let friends = [{name: 'sam', id: 1}, {name: 'jon', id: 13}, {name: 'snow', id: 10}]
Fun Fact: The array, invite_ids is actually a fibonacci series 😉
이제 초대 ID 목록에서 ID를 찾을 수 있는 친구만 파티에 참석하기를 원합니다. 어떻게 해야 합니까?
const filter_invites = (ids) => ({id}) => ids.includes(id)
// now we can do this...
let my_invites = friends.filter(filter_invites(invite_ids))
console.log(my_invites) // [{name: 'sam', id: 1}, {name: 'jon', id: 13}]
이제 가독성을 유지하면서 이 로직을 얼마나 간결하고 간략하게 구현했는지 주목하십시오. 필터링을 수행하는 함수는 재사용 및/또는 테스트를 위해 추상화될 수도 있습니다.
템플릿 리터럴
템플릿 리터럴은 멋지고 본질적으로 문자열과 비슷하지만 더 많은 기능이 있습니다. 매우 자주 표현식 및 기타 코드 관련 논리를 포함하려는 위치에서 사용됩니다.
let invite_ids = [ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
let friends = [{name: 'sam', id: 1}, {name: 'jon', id: 13}, {name: 'snow', id: 10}]
Fun Fact: The array, invite_ids is actually a fibonacci series 😉
const filter_invites = (ids) => ({id}) => ids.includes(id)
// now we can do this...
let my_invites = friends.filter(filter_invites(invite_ids))
console.log(my_invites) // [{name: 'sam', id: 1}, {name: 'jon', id: 13}]
템플릿 리터럴은 멋지고 본질적으로 문자열과 비슷하지만 더 많은 기능이 있습니다. 매우 자주 표현식 및 기타 코드 관련 논리를 포함하려는 위치에서 사용됩니다.
function greet(name) {
return `Hello ${name}`
}
greet('mike') // Hello mike
let friends = ["ola", "tea", "mike"]
let className = `box ${friends.length ? 'show' : 'hidden'}`
console.log(className) // 'box show'
템플릿 리터럴을 활용하여 인라인 및 보다 간결한 조건식을 작성할 수 있습니다.
더 많은 React 코드를 작성함에 따라 밝혀야 할 다른 개념이 많이 있지만 이 게시물을 궁극적인 권위자로 의도한 것은 아닙니다. 읽어주셔서 감사합니다. 귀하의 피드백이 마음에 듭니다.
You can follow me on
Reference
이 문제에 관하여(더 나은 React 코드를 작성하기 위한 JavaScript 개념), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nuel_ikwuoma/javascript-concepts-to-write-better-react-code-45f0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)