- React 瀑布流佈局的實現代碼 ,瞅下面!!!!
import React, { Component,Fragment } from 'react';
import {connect} from'react-redux'
import Axios from '[email protected]@axios';
class Waterfall extends Component {
constructor(props) {
super(props);
this.state = {
data:[],
leftData:[],
rightData:[]
}
}
getHW(data){
let heightDate = [0,0];
let rightData =[]
let leftData = []
data.forEach(item => {
let height = item.src.replace('http://dummyimage.com/','').substr(0,7).split('x')[1]*1;
let minNum = Math.min.apply(null,heightDate)
let minIndex = heightDate.indexOf(minNum);
heightDate[minIndex] = heightDate[minIndex] + height;
if(minIndex===0){
leftData.push(item)
}else{
rightData.push(item)
}
})
this.setState({ leftData,rightData });
}
render() {
let {leftData,rightData} = this.state;
console.log(leftData,rightData)
return (
<Fragment>
<div className='left'>
{
leftData && leftData.map((item,index)=>{
return <img src={item.src} alt={index} key={index}/>
})
}
</div>
<div className='right'>
{
rightData && rightData.map((item,index)=>{
return <img src={item.src} alt={index} key={index}/>
})
}
</div>
</Fragment>
);
}
componentDidMount(){
Axios.get('/api/data').then(res=>{
this.props.dispatch({
type:'SET_DATA',
data:res.data.data
})
this.getHW(this.props.data)
})
}
}
export default connect(
(state)=>{
return{
data:state.data,
}
}
)(Waterfall);