2016-10-21 2 views
0

Так что в моем состоянии я хочу отслеживать массив, который будет содержать объекты, используемые для запроса. Im использует React.js с Redux и имеет пакет lodash. Проблема в том, что я, кажется, не могу добавить объект в свой массив в моем состоянии.Невозможно добавить объект в массив в моем состоянии React.js

Надеюсь, кто-то может сказать мне, как это сделать должным образом.

Вот моя функция:

setFilterActive(type, min, max) { 
const filterObj = { 
    type: type, 
    min: min, 
    max: max 
}; 
let state = this.state; 
_.reject(state.queryObject.query.filters, filter => filterObj.isEqual(filter)); 
_.merge(filterObj,state.queryObject.query.filters); 
console.log(filterObj); 
this.setState(state); 
console.log("Filters Array:" , this.state.queryObject.filters); 
} 
+0

Не ответом на ваш вопрос, но если вы используете редукцию в реакции, вы не должны использовать состояние компонента. – OriolBG

+0

@OriolBG Я не думаю, что это правда. Государство по-прежнему подходит для использования, но любое состояние, которое у вас должно быть, должно быть локализовано. Говоря, что вы не должны ВСЕГДА использовать состояние, не нужно. Вы все равно будете использовать его для полей ввода, чтобы назвать одно. – CallMeNorm

+0

Извините, это получилось не так. Просто в этом случае кажется, что массив действительно имеет значение для приложения. – OriolBG

ответ

0

Попробуйте это.

setFilterActive(type, min, max) { 
    const filterObj = { 
     type: type, 
     min: min, 
     max: max 
    }; 
    let queryObject = this.state.queryObject; 
    _.reject(queryObject.query.filters, filter => filterObj.isEqual(filter)); 
    let newQueryObject = _.merge(filterObj,queryObject.query.filters); 
    console.log(filterObj); 
    this.setState({queryObject:newQueryObject}); 
    console.log("Filters Array:" , this.state.queryObject.filters); 
    } 

Кроме того, как предложение, вы должны использовать _.assign, а не _.merge, так как он мутирует объект.

+0

Спасибо за ваш ответ, но мой массив в состоянии не обновляется с помощью объекта запроса :( –

+0

может добавить рабочий скрипт? – WitVault

+0

В конце концов, мне удалось сохранить переменную в состоянии, которая может быть ошибкой в ​​моей сборке в конечном итоге –

Смежные вопросы