Столкнулся с тем, что все библиотеки D3 React (попробовал 5 за сегодня), не выполняют и половины нужных функций, даже если написано что выполняют, то просто не работают. Банально нельзя задать цвета.
Решил использовать родную D3.js
Встал вопрос как это провернуть. D3 Dom мутирует, а реакт нет... Создать отдельный js для d3 и подключать по require.insere?
Если есть такой опыт, то прошу поделиться.
Никита Гущин: а зачем ReactDOM.findDOMNode(this.refs.container)? this.refs же и так инстансы компонентов содержат - DOMNode, которые ReactDOM.render создаёт.
tarting with this release, this.refs.giraffe is the actual DOM node.
Note that refs to custom (user-defined) components work exactly as before; only the built-in DOM components are affected by this change.
Т.е. в нашем случае не нужно. Ninja Mate примите во внимание.
Никита Гущин: Aves: Как интересно будет происходить componentWillUnmount и нужно ли что то разрушать, когда пользователь уходит со страницы или все само обработается?
все таки у них разный механизм взаимодействия с дом. если все элементы рендерить внутри "container", а если не все и происходит обращение к другим div, нужно ли в этих двух случиях ставить что то на Unmount?
Ninja Mate: мне с d3 не приходилось работать, но думаю, при удалении контейнера сборщик мусора подчистит то, что он содержал, а внешние нужно удалять вручную из componentWillUnmount. Вообще, внешние совсем делать не стоит.
Ninja Mate: пример про другое, сравнение refs и findDOMNode. Выше я не совсем правильно написал, истанс - это отрендеренный компонент, экземпляр класса, а в refs находятся DOM-элементы инстанса. Не думаю, что непосредственно с инстансом стоит работать.
Делать нужно практически как Никита Гущин написал в ответе, только без findDOMNode - пример
В одном если файле находится этот же код, только без импорта, то все работает. Если я его выношу и пытаюсь импортировать (все способы попробовал), то Element type is invalid