Próbuję dodać styl animacji do składnika i walczy, aby dowiedzieć się, gdzie to idzie źle. Oto prosty komponent z connect() i CSSTransitionGroup (inny komponent gdzie indziej w DOM zostanie ostatecznie wykorzystany do uruchomienia mojego komponentu lightbox, Redux będzie używany do dzielenia stanu między nimi, na wypadek gdybyś zastanawiał się, dlaczego jest to wymagane) :Prawidłowy sposób korzystania z CSSTransitionGroup i Redux Connect
LightboxPresentation.js:
import React, { Component } from 'react';
import { CSSTransitionGroup } from 'react-transition-group';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import * as actionCreators from '../actions/actionCreators';
class LightboxPresentation extends Component {
render() {
return (
<div>
<CSSTransitionGroup
transitionName="lightbox"
transitionEnterTimeout={500}
transitionLeaveTimeout={500}>
{this.renderPage()}
</CSSTransitionGroup>
</div>
)
}
renderPage() {
return (
<div key={'lightbox-module'}>Some test HTML</div>
);
}
}
const mapStateToProps = (state) => {
return {
showLightbox: state.showLightbox,
itemsShowLightbox: state.itemsShowLightbox,
};
};
const mapDispatchToProps = (dispatch) => {
return bindActionCreators(actionCreators, dispatch);
};
export default connect(mapStateToProps, mapDispatchToProps)(LightboxPresentation);
Oto kod, który wywołuje powyższy składnik:
App.js:
import React from 'react';
import { render } from 'react-dom';
import { Provider } from 'react-redux';
import configureStore from './store/configureStore';
import ItemList from './components/ItemList';
import LightboxPresentation from './components/LightboxPresentation';
const initialState = { itemFilter: 'featured' }
const store = configureStore(initialState);
render(
<Provider store={store}>
<LightboxPresentation />
</Provider>,
document.getElementById('lightbox')
);
Jednak pojawia się następujący błąd w mojej konsoli:
Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in. Check the render method of `LightboxPresentation`.
in LightboxPresentation
in Connect(LightboxPresentation)
in Provider
Jeśli usunąć blok z całego moje wezwanie renderPage, wyjście renderPage renderuje bez błędów. Dodanie tylko bloku przejść powoduje błąd. O ile mogę powiedzieć, że import {CSSTransitionGroup} jest poprawny, to jak to robią w documentatio n (chociaż próbowałem go bez nawiasów klamrowych i wciąż nie miałem szczęścia).
Czy robię coś nie tak? Spędziłem trochę czasu próbując różnych rzeczy i Googling, ale wszystko bez radości do tej pory.
To był zdecydowanie część problemu, dzięki! – delinear