Как уже говорилось в предупреждении, вы должны сделать это,
show={achieveDreams && achieveDreams.length === 0 ? true : false}
Примечание: Я сомневаюсь в этом условии achieveDreams && achieveDreams.length === 0
.
Что это за условие,, если achieveDreams
(имеет значение / не равно нулю) И achieveDreams.length === 0
.
Так что я думаю, что это условие всегда будет false
, ваше состояние должно быть таким,
show={achieveDreams && achieveDreams.length !== 0 ? true : false}
Обновление
Из документы ,
Я не видел ни одного варианта использования, который вы используете, из документов мы видим, что у вас есть только 2 варианта использования модальных.
Через атрибуты данных,
<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
Через JavaScript,
Bootstrap.modal('#myModal', options);
Итак, ваша попытка использовать опору show
на модале здесь недопустима. Использование show
prop на модале не влияет на ваш модал, вы должны удалить его .
Ваш модал отображается из-за Bootstrap.modal('#myModal', options);
в componentDidMount
.
Вы должны иметь условие в componentDidMount
как,
componentDidMount() {
//considering `achieveDreams` is in state only,
//if `achieveDreams` is coming from `props` you should use `this.props.achieveDreams && this.props.achieveDreams.length !== 0`
if(this.state.achieveDreams && this.state.achieveDreams.length !== 0){
Boostrap.modal("#signupModal", 'toggle')
}
}
Обновление 2
Согласно комментарию "reachDreams false" "reachDreams.lenth 0" Модальное значение должно отображаться, если вышеприведенное верно.
Вы должны быть такими,
componentDidMount() {
//considering `achieveDreams` is in state only,
//if `achieveDreams` is coming from `props` you should use `this.props.achieveDreams && this.props.achieveDreams.length === 0`
if(this.state.achieveDreams && this.state.achieveDreams.length === 0){
Boostrap.modal("#signupModal", 'toggle')
}
}
Демо