React Clamp.js не применяется, когда контент загружается асинхронно

Я использую реагирующий зажим https://www.npmjs.com/package/react-clamp который используетобытный зажим.

this.props.events.map((event,i) => {
    return <div key={i}>
        <Clamp clamp={2}>The is a really long event name</Clamp>
    </div>
})

Это прекрасно работает, если this.props.events установлен статически, но эти события выбираются асинхронно, а события отображаются при загрузке. По какой-то причине Clamp не применяется повторно. Может ли это быть как-то связано с тем, что слушатели событий не связываются правильно на втором рендере?

Обновление Просматривая код, он отображает элемент без изменений и не применяет зажим до вызова componentDidUpdate. Когда я использую зажим для элемента, который получает статический подпор, вызывается componentDidUpdate (хотя я не уверен почему, так как я не вижу никакой причины, по которой элемент обновляется. Когда данные поступают через избыточный код, componentDidUpdate никогда не вызывается, поэтому зажим не применяется. Может ли это быть связано с компонентом Reaction-redux, реализующим компонент ShouldUpdate?

1 ответ

Закончилось написание моего собственного компонента для непосредственного использования зажима.js, и он прекрасно работает. Запускает зажим.js, как только компонент монтируется. Не будет никаких обновлений для этих компонентов, поэтому я не реализовал componentDidUpdate, но я мог бы легко это сделать.

class Clamp extends Component {

    componentDidMount(){
        if (this.container.length) {
            throw new Error('Please provide exactly one child to clamp');
        }

        clamp(this.container, {
            clamp: this.props.clamp,
            truncationChar: this.props.truncationChar,
            useNativeClamp: this.props.useNativeClamp
        });
    }

    render() {
        return (
            <div ref={(div) => this.container = div}>{this.props.children}</div>
        );
    }
}
Другие вопросы по тегам