Реактивное движение с редуксом

Я пытаюсь добавить новый комментарий в свое приложение React + Redux с помощью react-motion,

class Comments extends Component {
    getDefaultStyles() {
        const { comments } = this.props;
        return comments.map((c, i) => {
            return {
                key: "" + i,
                style: { top: -50, opacity: 0.2 },
                data: c
            }
        });
    }
    getStyles() {
        const { comments } = this.props;
        return comments.map((c, i) => {
            return {
                key: "" + i,
                style: {
                    top: spring(0, presets.gentle),
          opacity: spring(1, presets.gentle)
                },
                data: c
            }
        })
    }
    willEnter() {
        return { top: -50, opacity: 0.2 }
    }
    render() {
        let { comments } = this.props;
        return (
            <div>
                <TransitionMotion defaultStyles={this.getDefaultStyles()} styles={this.getStyles()} willEnter={this.willEnter}>
                {styles =>
                    <div>
                    {
                        styles.map((c) => {
                            return (
                                <Comment key={c.key} comment={c.data} style={{...c.style, overflow: 'hidden'}} />
                            )
                        })
                    }
                    </div>
                }
                </TransitionMotion>
            </div>
        )
    }
}

Затем стиль передается в первый div в Comment составная часть.

Во время загрузки комментариев анимация в порядке. Но пользователь добавляет комментарий, а затем fetchComments Метод вызывается для получения всех комментариев, анимация не происходит. Это как-то связано с редуксом? Я передаю свой комментарий, используя mapStateToProps а также connect,

1 ответ

Проблема была с ключом. Анимация происходила, но в нижней части комментариев, поскольку отображение через них назначало им ключ на основе индекса в массиве. Когда я изменил ключ, чтобы содержать comment.id номер начал работать правильно!

Другие вопросы по тегам