1
我正在努力與iScroll結合reactJS currenlty。
此代碼示例是用打字稿編寫的。如何在父反應組件中調用iScroll刷新方法?
我創建了一個包裝類iScroll:
import * as React from 'react';
import * as ReactDOM from 'react-dom';
var iScroll = require('iscroll');
...
componentDidMount() {
this._initializeIScrollInstance();
console.log(this);
}
_initializeIScrollInstance() {
setTimeout(() => {
let element = ReactDOM.findDOMNode(this);
const iScrollInstance = new iScroll(element, this.props.options);
this._iScrollInstance = iScrollInstance;
}, 100);
}
render() {
return (
<div style={ this.props.style } >
{ this.props.children }
</div>
)
}
}
然後我用它像這樣在我的側邊欄類實例。
<ScrollWrapper>
<SidebarMenu toggle={ this.toggle.bind(this) } />
</ScrollWrapper>
我面臨的問題是當我在側邊欄切換菜單。這意味着高度發生變化,所以我需要調用iScroll的刷新方法。
但我該如何做到這一點?
我可以在我的父組件中獲得_iScrollInstance嗎?
它可能保持我的側邊欄內的狀態,並將其作爲屬性傳遞給ScrollWrapper,並在componentReceiveProps中監視它。 但這聽起來像是一個便宜的解決方案給我。
任何人都可能有更好的解決方案,這種問題?
謝謝你的解釋。我也想過使用回調函數的方式,但我不知道如何在包裝器中傳遞它。我現在採取了與REDX的方式,它的作品完美。減少正常的Facebook流量有什麼好處嗎? – datoml
它非常易於使用。並且與TypeScript一起使用也很好:https://github.com/basarat/tsb/blob/master/docs/contributing/REDUX.md – basarat