victorzadorozhnyy
@victorzadorozhnyy

Почему не получается передать аргумент и вызвать повторный render SVG?

Есть элемент в котором SVG и функция для определения ширины окна, которая задает ширину SVG
Функция handleResize определяет ширину div и назначает при изменении новый элемент SVG c props

//Здесь происходит определение ширины SVG
componentDidMount() {
        var width = this.props.width;
}

//В родителе
handleResize(e) {
        //Не работает, ширина CoreENGChart остается прежней
        this.setState({ chart: <CoreENGChart width={document.getElementById("mydiv").offsetWidth} /> });
        console.log( document.getElementById("mydiv").offsetWidth );//работает, выдает ширину 
}

componentDidMount(){
        window.addEventListener('resize', this.handleResize);
        //Задаем стейт первый раз и все работает
        this.setState({ chart: <CoreENGChart width={document.getElementById("mydiv").offsetWidth } />});
}
'''
render() {
        return (
            <div id="mydiv">
                {this.state.chart}
            </div>
        );
    }


Почему может не работать?
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
victorzadorozhnyy
@victorzadorozhnyy Автор вопроса
Не знаю почему, но элемент без полного обнуления не рендерится заново
Решил так, но хотелось бы понять почему
handleResize() {
        this.setState({ chart: '' });
        this.setState({ chart: <CoreENGChart width={document.getElementById("mydiv").offsetWidth} /> });
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы