рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдШрдЯрдХ рд╣реИ рдЬрд┐рд╕реЗ connect function
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрдк рд╕реНрдЯреЗрдЯ рдЯреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рджреЛрдиреЛрдВ рдХреЛ export default
; рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдбреЗрдХреЛрд░реЗрдЯрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдШрдЯрдХ рдХреЛ рд░реЗрдбрдХреНрд╕ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдбреНрд░реИрдЧрдбреНрд░реЙрдкрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рд╣реЛ?
рд╣рд╛рдБ, рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
import { connect } from "react-redux";
import HTML5Backend from "react-dnd-html5-backend";
import { DragDropContext } from "react-dnd";
class App extends Component {
...
}
App = DragDropContext(HTML5Backend)(App);
export default connect(mapStateToProps)(App);
рдмреЗрдЭрд┐рдЭрдХ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ :)ред
рдЖрд╣ рдореИрдВ рднреА рдЙрд╕реА рддрд░рд╣ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред рдХреНрдпрд╛ flow
рднреА рдПрдХ рдФрд░ рд╕реНрд╡реАрдХрд╛рд░реНрдп рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛?
import { DragDropContext } from 'react-dnd'
import HTML5Backend from 'react-dnd-html5-backend'
import flow from 'lodash/flow'
export default flow(
connect(selector),
DragDropContext(HTML5Backend)
)(ExperienceEditor);
рд╣рд╛рдБ, рд╡рд╣ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛!
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЯрдЪ рдмреИрдХ рдПрдВрдб рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ...
рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА
рдРрдк = рдбреНрд░реИрдЧрдбреНрд░реЙрдкрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ (рдЯрдЪрдмреИрдХрдПрдВрдб ({enableMouseEvents: true})) (рдРрдк);
рдирд┐рд░реНрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдиреЗрдХреНрдЯ (mapStateToProps, mapDispatchToProps) (рдРрдк);
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдзрдиреНрдпрд╡рд╛рджред
@longmfe рдЖрдк App
рдХреИрд╕реЗ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
@jnrepo рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореИрдВ рдЕрднреА рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдБ
import App from ../../somepath/App.js
рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдРрдк рдмрдирд╛рддрд╛ рд╣реВрдВ
import {connect} from react-redux
import {bindActionsCreators} from redux
class App extends Component {
}
App = DragDropContext(TouchBackend({ enableMouseEvents: true }))(App);
export default connect(mapStateToProps, mapDispatchToProps)(App);
рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛред
рдореБрдЭреЗ рдЕрдкрдиреЗ рдореВрд▓ рдШрдЯрдХ рдХреЛ рдбреНрд░реИрдЧрдбреНрд░реЙрдкрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХрдВрд╕реЛрд▓ рдореЗрдВ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ:
Invariant Violation: addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component's
рд░реЗрдВрдбрд░ method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).
рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕реБрд░рд╛рдЧ? рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВ рд░рд┐рдПрдХреНрдЯ рдХреА рдХрдИ рдкреНрд░рддрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдбреНрд░реИрдЧрдбреНрд░реЙрдкрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд╕рд╛рде рд░реВрдЯ рдШрдЯрдХ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ред рдзрдиреНрдпрд╡рд╛рдж!
рдореЗрд░реЗ рдкрд╛рд╕ root.js рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
import { Component } from 'react';
import { DragDropContext } from 'react-dnd';
import HTML5Backend from 'react-dnd-html5-backend';
class Root extends Component {
render() {
return <div>
{React.cloneElement(this.props.children, this.props)}
</div>;
}
}
export default DragDropContext(HTML5Backend)(Root);
рдФрд░ App.js рдХреЗ рд░реВрдк рдореЗрдВ:
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import Root from './root';
function mapStateToProps(state) {
return {
...
}
}
function mapDispatchToProps(dispatch) {
return bindActionCreators({
...
}, dispatch)
}
const App = connect(mapStateToProps, mapDispatchToProps)(Root);
export default App;
рд░рд┐рдПрдХреНрдЯ рдХрдВрд╕реЛрд▓ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдШрдЯрдХреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ ...
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣рд╛рдБ, рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдмреЗрдЭрд┐рдЭрдХ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ :)ред