Обновите определенное свойство атрибута объекта в блоке Wordpress Gutenberg - PullRequest
1 голос
/ 05 июня 2019

У меня есть пользовательский блок Гутенберга с атрибутом:

valuesObj: {
    type: 'object',
    default: {},
}

Я хочу обновить определенное свойство в этом объекте при изменении ввода. Итак, я создал функцию, которая вызывается из onChange для компонента:

<TextInput
    value={ valuesObj[index] }
    onChange={ (value) => this.onChangeValue(value, index) }
/>

Это вызываемая функция:

onChangeValue(value, index) {
    var newValuesObj = this.props.attributes.valuesObj;

    newValuesObj[index] = value;

    this.props.setAttributes({ valuesObj: newValuesObj });
};

По какой-то причине это, похоже, не работает вообще. Когда я набираю TextInput, ничего не меняется. Когда я сохраняю сообщение, для этого атрибута ничего не сохраняется. Я знаю, что функция вызывается правильно и передает правильные значения value и index (I console.log их). Я изучал документацию Гутенберга, но, похоже, ничего об этом не упоминается.

Не уверен, что я пропускаю / делаю неправильно.

1 Ответ

1 голос
/ 05 июня 2019

Вы вызываете onChangeURL, но ваш метод называется onChangeValue.

Я не уверен, откуда исходит значение index, но попробуйте создать новый объект в вашемonChangeValue и установите этот новый объект для вашего атрибута.

Попробуйте изменить onChangeValue на что-то вроде:

onChangeValue(value, index) {
    var newValuesObj = {};
    newValuesObj[index] = value;
    this.props.setAttributes({ valuesObj: newValuesObj });
  }
...