Я использую MaterialUI
для создания компонента Expanded
, где внутри у меня есть список текстовых полей.
Я храню данные в избыточном.
reduxState = {
fieldName1:[
{
primaryText:"text1",
},
{
primaryText:"text2"
},
],
fieldName2:[
{
primaryText:"text1"
},
{
primaryText:"text2"
},
]
}
Каждый Exapanded
сохраняет textField
каждого fieldNameN
компонента Exapanded
выглядит следующим образом
function Expanded(props) {
const {onChange, title, list } = props
const CustomPaper = withStyles({
root:{
color: blue
}
})(Paper)
return (
<ExpansionPanel>
<ExpansionPanelSummary expandIcon={<ExpandMoreIcon />}>
<Typography>{title}</Typography>
</ExpansionPanelSummary>
<ExpansionPanelDetails>
<Grid container spacing={1} direction="row">
{list.map((item,i) =>
<CustomPaper key={i}>
<TextInput label="Main Text" value={item.primaryText} xs={12} onChange={(value) => onChange(value, i, 'primaryText')}/>
</CustomPaper >
)}
</Grid>
</ExpansionPanelDetails>
</ExpansionPanel>
);
}
Пример использования
<Expanded
title={`Add FieldName1`}
list={reduxState.fieldName1}
onChange={onChangeSectionInfo('fieldName')}
/>
функция onChangeSelectionInfo
вызывает приставку updateSection
при вводе
[formActionTypes.UPDATE_SECTION]: (state, action) => {
//ex. field-FieldName, value-"text1Updated", index=0, element="primaryText"
const { field, value, index, element } = action.payload;
return {
...state,
[field]: state[field].map((object, i) =>
i === index ? { ...object, [element]: value } : object
)
};
},
Проблема в том, что я могу набрать только один символ, и тогда он не фокусирует TextField. Это проблема с redux, что обновление занимает слишком много времени?
РЕДАКТИРОВАТЬ: Решение от здесь не помогает, я вынул все циклы и все еще не работает