Я пытаюсь обновить свое представление, когда обновляется массив, находящийся внутри функции рендеринга. Поскольку для выполнения повторного рендеринга требуется изменение состояния или изменение свойств, как я могу решить эту проблему?
Примечание: массив обновляется правильно, единственная проблема в том, что я не могу отобразить обновленный массив, так как не происходит изменения состояния.
мой код
class TextVotePost extends Component {
constructor() {
super();
this.state = {
addOption: 3,
maxImage: 4,
optionBtn: true,
};
this.addOption = this.addOption.bind(this);
}
addOption() {
this.setState(prevState => ({
addOption: ++prevState.addOption,
}));
}
render() {
let list = [];
const textPollMaxLength = 35;
function removetextpoll() {
list.splice(0, 1);
}
for (let i = 3; i <= this.state.maxImage; i++) {
{
this.state.addOption > i &&
list.push(
<div key = {i}>
<div className = "txt_vote_bar_div">
<div onClick = {removetextpoll} />
<Field
name = {`inputName${i}`}
component = "input"
type = "text"
placeholder = {`Option ${i}`}
maxLength = {textPollMaxLength}
/>
</div>
</div>,
);
}
}
return (
<form onSubmit = {this.props.handleSubmit}>
{list}
<div onClick = {this.addOption}>
<span>Add Option</span>
</div>
}
</form>
);
}
}
я пробовал. Но представление не выводит мои компоненты div при использовании состояния
какое действие вы делаете? и каков ваш ожидаемый результат и текущий результат?
ожидаемый результат: при нажатии на «Добавить параметр» мне нужно добавить компонент div в свой массив и отобразить добавленный компонент div. (эта часть работает). При нажатии на «removetextpoll» мне нужно удалить компонент div из div (это тоже работает, но не удаляет компонент div из представления)
вызывает ли удаление ошибки?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Без setState() React не знает, что он должен изменить вашу точку зрения.
class TextVotePost extends React.Component {
constructor() {
super();
this.state = {
addOption: 0,
maxImage: 4,
optionBtn: true,
};
this.addOption = this.addOption.bind(this);
this.removetextpoll = this.removetextpoll.bind(this);
}
addOption() {
this.setState(prevState => ({
addOption: ++prevState.addOption,
}));
}
removetextpoll() {
this.setState(prevState => ({
addOption: --prevState.addOption,
}));
}
render() {
const textPollMaxLength = 35;
return (
<form onSubmit = {this.props.handleSubmit}>
{[...Array(this.state.addOption).keys()].map((item, i) => (
<div key = {i}>
<div className = "txt_vote_bar_div">
<div onClick = {this.removetextpoll}>remove</div>
<Field
name = {`inputName${i}`}
component = "input"
type = "text"
placeholder = {`Option ${i}`}
maxLength = {textPollMaxLength}
/>
</div>
</div>
))}
<div onClick = {this.addOption}>
<span>Add Option</span>
</div>
{JSON.stringify(this.state)}
</form>
);
}
}
ReactDOM.render(<TextVotePost />, document.querySelector("#app"))
сохранить массив внутри состояния