當組合使用antd-mobile的Tabs 和 ListView的時候鸟悴,發(fā)現(xiàn)ReactDOM.findDOMNode(ref.current).offsetTop查找ListView該dom節(jié)點的offsetTop為0,導致上拉的時候讓本該固定的Tabs卻被隱藏掉了,如下
const hei = height - ReactDOM.findDOMNode(ref.current).offsetTop;
<Tabs onChange={(tab, index) => { changeTabs(tab, index); }} tabs={tabs} tabBarUnderlineStyle={{ borderBottomWidth: 0.7, borderBottomColor: '#004CDF', width: '10%', textAlign: 'center', left: '5%' }} renderTabBar={props => <Tabs.DefaultTabBar {...props} page={5} />}>
<ListView
key={useBodyScroll ? '0' : '1'}
ref={ref}
dataSource={dataSource}
// renderHeader={() => <span>Pull to refresh</span>}
renderFooter={() => (<div style={{ padding: 30, textAlign: 'center' }}>
{isLoading ? 'Loading...' : 'Loaded'}
</div>)}
renderRow={row}
// renderSeparator={separator}
useBodyScroll={useBodyScroll}
style={useBodyScroll ? {} : {
height: height,
border: '1px solid #ddd',
margin: '5px 0',
}}
pullToRefresh={<PullToRefresh
refreshing={refreshing}
onRefresh={onRefresh}
/>}
onEndReached={onEndReached}
pageSize={5}
/>
</Tabs>
解決方法:官方組件的問題,子panel沒有offsetTop高度盆繁,目前折中的方法是,給Tabs一個設(shè)定的高度旬蟋,然后寫死ListView的ReactDOM.findDOMNode(ref.current).offsetTop為50
#{"/deep/"} .am-tabs-tab-bar-wrap{
box-sizing: border-box;
position: relative;
height: 50px;
line-height: 50px;
}
const hei = height - 50
然后問題就解決了
github相關(guān)問題傳送門:https://github.com/chendishen/bugList