Я делал обзор кода для своего коллеги и натолкнулся на код, который сразу же вызвал у меня тревогу.
<Checkbox label={translationContext.getTranslation(checkboxLabel)}/>
... inside functional component
const getNextSection = () => {
valid = context.actions.validateCurrentSection()
if(!valid){
return context.actions.showErrors()
} else {
return context.actions.getNextSection()
}
}
Это также вызвало некоторые другие проблемы. Что, если бы нам понадобилось перенести эти функции в другой контекст в будущем? Нам нужно будет отслеживать каждый раз, когда к этой функции обращаются context.actions.functionIWantToMove, и изменять контекст, в котором функция вызывается, то есть мне пришлось бы предоставить этому компоненту полный доступ к ВТОРОМУ контексту. Все для того, чтобы он мог получить доступ к одному фрагменту данных или вызвать единственную функцию.
Я быстро набросился на мерзавца, чтобы посмотреть, кто мог реализовать такой безответственный паттерн, и, конечно же, это был я. Ясно, что это ужасный способ делать что-то. Нам нужно было лучшее решение.
Одна из вещей, в которой React действительно хорош, - это разделение задач. Никакая особенность не воплощает это больше, чем крючки. Я вернулся к той строке, которая изначально вызвала красные флажки, я расширил код, чтобы предоставить дополнительный контекст:
import React, {useContext} from "react"
import {TranslationContext} from "../contexts/translation-context.tsx"
const CheckboxGroup = ({options}) => (
translationContext = useContext(TranslationContext)
<div>
{options.map(option => (
<Checkbox label={translationContext.getTranslation(option.text) />
))
}
</div>
)
import React from "react"
import {useTranslate} from "../translate"
const TranslatedCheckbox = ({label}) => {
const translatedValue = useTranslate(label)
return <Checkbox label={translatedValue} />
}
const CheckboxGroup = ({options}) => (
<div>
{options.map(
option => <TranslatedCheckbox label={option.label}/>
)
}
</div>
)
Я просто хотел отметить, что представленные здесь фрагменты кода являются надуманными примерами, используемыми для того, чтобы подчеркнуть точку зрения, отредактированными, чтобы показать только соответствующие части. Я знаю, что они не пойдут как есть. Надеюсь, это все еще будет понятно.
Введение Инсульт — это неотложная медицинская помощь, которая может случиться с кем угодно в любое время. Это происходит, когда приток крови к части мозга нарушается, что приводит к внезапной потере функции мозга.
Тестирование — неотъемлемая часть разработки программного обеспечения. Это гарантирует, что код надежен, функционирует должным образом и снижает вероятность ошибок.
Элисон Ли, управляющий советник по связям с правительством Процесс ежегодных ассигнований федерального правительства занимает центральное место в наших усилиях по финансированию удаления двуокиси углерода (CDR). Каждый год Carbon180 направляет запросы в различные офисы Конгресса, чтобы помочь определить, куда пойдут доллары в следующем году.
Привет, киберлюбители! Добро пожаловать обратно в серию OSINT по поиску угроз. В первой статье я рассказал вам об OSINT и его важности для поиска угроз.
Это ярко-золотое утро в холмистой местности на западе, когда первые лучи солнечного света освещают инеистую траву на равнинах. Стадо безмятежных ангусских коров, угольно-черных и массивных, вырисовывается на фоне восхода солнца, когда они идут по проторенной тропе к месту, которое они все хорошо знают; барная стойка.
В современном быстро меняющемся и конкурентном мире карьера играет важную роль в личностном росте, финансовой стабильности и общей удовлетворенности жизнью. Однако многие люди оказываются в безжалостном цикле застоя и неудовлетворенности, постепенно угасая в своей профессиональной жизни.