#reactjs #refactoring #material-ui
#reactjs #рефакторинг #материал-пользовательский интерфейс
Вопрос:
Я оформляю required TextField
вот так
const styles = theme => ({
labelAsterisk: {
color: "red"
},
cssLabel: {
color: "orange"
},
cssRequired: {
"amp;:before": {
borderBottom: "2px solid orange"
}
},
});
<TextField
id="requiredField"
label="Required Field"
value="Custom Text"
required
InputLabelProps={{
classes: {
root: classes.cssLabel
},
FormLabelClasses: {
asterisk: classes.labelAsterisk
}
}}
InputProps={{
classes: {
underline: classes.cssRequired
}
}}
margin="normal"
/>
У меня много таких обязательных полей в моих формах, и я хотел бы стандартизировать их вместо копирования и вставки больших кусков кода.
Каков наилучший способ реорганизовать это, чтобы мне нужно было только указывать id
, label
и value
каждый раз, когда я его использую?
Нужно ли расширять TextField
?
Создать новый компонент, который расширяется React.Component
?
Использовать функцию или константу?
Ответ №1:
Вот как бы вы определили свой пользовательский компонент TextField:
const RequiredTextField = ({id, label, value}) => (
<TextField
id={id}
label={label}
value={value}
required
InputLabelProps={{
classes: {
root: classes.cssLabel
},
FormLabelClasses: {
asterisk: classes.labelAsterisk
}
}}
InputProps={{
classes: {
underline: classes.cssRequired
}
}}
margin="normal"
/>
)
И вот как вы могли бы это использовать:
<RequiredTextField id="some-id" label="some-label" value="some-value">