Π£ ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΠ³Π΄Π° Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ connect function
Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ response-dnd. Π― Π·Π°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ ΠΎΠ±Π° Π΄ΠΎΠ»ΠΆΠ½Ρ export default
; ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. ΠΡΠ΄Π΅Ρ Π»ΠΈ ΠΎΠ±Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊ redux ΠΈ ΠΈΠΌΠ΅ΡΡ dragdropcontext, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°?
ΠΠ°, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ:
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);
ΠΠ°, ΡΡΠΎ ΡΠΎΠΆΠ΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ!
ΠΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ Π΄Π»Ρ touch back end Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ...
Π― ΠΏΡΡΠ°Π»ΡΡ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ = DragDropContext (TouchBackend ({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);
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ. Π₯ΠΎΡΠΎΡΠ΅Π³ΠΎ Π΄Π½Ρ.
Π£ ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΎΠΌ ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² DragDropContext. Π ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ°Ρ:
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
render method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).
ΠΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? Π― Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π²ΠΊΠ»ΡΡΠ°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΏΠΈΠΉ React. ΠΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΡΠ» Π·Π°ΠΊΠ»ΡΡΠ΅Π½ Π² DragDropContext. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
Π£ ΠΌΠ΅Π½Ρ 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;
ΠΠΎΠ½ΡΠΎΠ»Ρ React ΡΠ°ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ...
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ°, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ:
Π‘ΠΌΠ΅Π»ΠΎ ΠΎΡΠΊΡΡΠ²Π°ΠΉΡΠ΅ Π·Π°Π½ΠΎΠ²ΠΎ :).