React == 实现简易购物车
<p>React == 实现简易版购物车</p><p> 1、几个要点:</p>
<p> 为了方便后面使用input type = "checkbox" 实现复选框的选中/不选中,给传递过来的属性要在遍历的时候,单独加上一个新属性 checked </p>
<p> count 属性 默认值 都是1.</p>
<p> state = {</p>
<pre><span> all : false<span>,
sumprice :0<span>,
one : false<span>,
sumcount:0</span></span></span></span></pre>
<p> } </p>
<p> state对象 : </p>
<ul>
<li> all -----> 用来定义全选按钮</li>
<li> sumprice -----> 用来定义总价</li>
<li> one -----> 用来控制 结算按钮的样式(当选中的其中任何一条购物车条目时候,显示橘色,当没有任何一条选中,显示灰色)</li>
<li> sumcount ----> 用来显示购物车的总数量,显示在页面中</li>
</ul>
<p> </p>
<p> 2、单选框的实现</p>
<p> 1)首先是渲染的都是同样的样式,所以在这里传递一个index特别关键,通过index的传递才能够知道操作的是哪条</p>
<p> 2)当onchange事件发生的时候,对当前checked属性进行取反。list.checked = ! list.checked。</p>
<p> 3)单选框决定全选框:使用了数组的every方法(只有数组的每一项都满足条件,才会返回true),用所有datalist的单选框都是true的时候,全选按钮才会为true</p>
<p> 4)单选框的选中与否决定结算框的样式:one : list.checked // 为true的时候,one : true </p>
<div class="cnblogs_code">
<div>
<div> <input type="checkbox" className={style.checkbtn+' '+style.UnChecked} ref="mytext"</div>
<div> onChange={()=>{this.handleChange(index)}} checked={item.checked} value=""</div>
<div> /></div>
</div>
<pre> <br><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 单选</span>
<span style="color: rgba(0, 0, 0, 1)"> handleChange(index){
</span><span style="color: rgba(0, 0, 255, 1)">var</span> list = [...<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.state.datalist]
list.checked </span>= !<span style="color: rgba(0, 0, 0, 1)">list.checked
// <span style="color: rgba(0, 128, 0, 1)">every方法
</span></span><span style="color: rgba(0, 0, 255, 1)">var</span> every=list.every((item,index)=><span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 0, 255, 1)">return</span> item.checked==<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
})
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 单选框中如果有一个是 checked的是true就可以</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> some = list.some((item,index)=><span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> list.checked
})
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.setState({
datalist :list,
all : every, //<span style="color: rgba(0, 128, 0, 1)">全选按钮,只有当所有的list=== true 的时候才会返回true</span>
one : some</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设定结算框的样式是哪个,根据list.checked</span>
<span style="color: rgba(0, 0, 0, 1)"> })
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.SumPrice()
}</span></pre>
</div>
<p> </p>
<p> 3、全选按钮的实现</p>
<p> 1)当点击全选框,对全选框的状态进行取反</p>
<p> 2)点击全选按钮的时候,所有的单选框的为true / false 直接取决的 全选框按钮当前的状态true / false </p>
<p> 遍历所有的list.checked = all , 把全选框的状态(true/false)直接赋值给所有的list.checked 。 </p>
<p> 3)当全选的时候,结算框的样式直接会跟随变动,当为false,即没有一个购物车条目呗选中,此时结算框的状态为灰色。当为true,结算框为橘色。</p>
<div class="cnblogs_code">
<pre> <input type="checkbox" onChange={()=>{<span style="color: rgba(0, 0, 255, 1)">this</span>.handleAll()}} checked={<span style="color: rgba(0, 0, 255, 1)">this</span>.state.all} value=""/>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 全选</span>
<span style="color: rgba(0, 0, 0, 1)"> handleAll(){
</span><span style="color: rgba(0, 0, 255, 1)">var</span> list = [...<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.state.datalist]
</span><span style="color: rgba(0, 0, 255, 1)">var</span> all = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.state.all
all </span>= !<span style="color: rgba(0, 0, 0, 1)"> all <span style="color: rgba(0, 128, 0, 1)">//onchange事件发生,就是对当前的状态进行取反
</span></span><span style="color: rgba(0, 0, 255, 1)">for</span>(<span style="color: rgba(0, 0, 255, 1)">var</span> i = 0 ; i < list.length ;i++<span style="color: rgba(0, 0, 0, 1)">){
list.checked </span>=<span style="color: rgba(0, 0, 0, 1)"> all <span style="color: rgba(0, 128, 0, 1)">// 全选框的状态直接影响所有的单选框,就把全选框的状态赋给所有的单选框即可</span>
}
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.setState({
all : all,
one : all </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">全选的状态直接影响结算框的样式</span>
<span style="color: rgba(0, 0, 0, 1)"> })
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.SumPrice()
}</span></pre>
</div>
<p> </p>
<p> 4、购物车数量加减的实现</p>
<p> 1)数量增加Add</p>
<p> 重要的还是传递对应的index,才能准确地知道操作的是哪个购物车条目 </p>
<p> list.count++</p>
<p> 2)数量减少Minus</p>
<p> 还有进行一步判断,当此时购物车的数量已经是1的时候,不允许再继续减了</p>
<p> list.count--</p>
<p> list.count<1?1:list.count</p>
<p> </p>
<div class="cnblogs_code">
<pre><button className={style.minus} onClick={()=>{<span style="color: rgba(0, 0, 255, 1)">this</span>.handleMinus(index)}}>-</button>
<input type="text" value={<span style="color: rgba(0, 0, 255, 1)">this</span>.state.datalist.count||''}/>
<button className={style.add} onClick={()=>{<span style="color: rgba(0, 0, 255, 1)">this</span>.handleAdd(index)}}>+</button>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 加</span>
<span style="color: rgba(0, 0, 0, 1)">handleAdd(index){
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设定的value= {this.state.datalist.count}</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> list = [...<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.state.datalist]
list.count</span>++<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.setState({
datalist : list,
})
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.SumPrice()
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">减</span>
<span style="color: rgba(0, 0, 0, 1)"> handleMinus(index){
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设定的value= {this.state.datalist.count}</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> list = [...<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.state.datalist];
list.count</span>--<span style="color: rgba(0, 0, 0, 1)">
list.count</span>=list.count<1?1<span style="color: rgba(0, 0, 0, 1)">:list.count;
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.setState({
datalist : list
})
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.SumPrice()
}</span></pre>
</div>
<p> </p>
<p> 5、总价的实现</p>
<p> 1)遍历所有的datalist,只有当其中每一个checked属性为true的时候(表明已经被勾选上了,此时可以计算),才去计算金额</p>
<p> 2)得到所有的总价,还能得到当前选中的数量一共有多少</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">SumPrice(){
</span><span style="color: rgba(0, 0, 255, 1)">var</span> sum=0
<span style="color: rgba(0, 0, 255, 1)">var</span> count = 0<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">var</span> list = [...<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.state.datalist]
</span><span style="color: rgba(0, 0, 255, 1)">for</span>(<span style="color: rgba(0, 0, 255, 1)">var</span> i =0; i< list.length ;i++<span style="color: rgba(0, 0, 0, 1)">){
</span><span style="color: rgba(0, 0, 255, 1)">if</span>(list.checked=== <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">){
sum </span>+= list.newprice *<span style="color: rgba(0, 0, 0, 1)">list.count
count </span>+=<span style="color: rgba(0, 0, 0, 1)"> list.count
}
}
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.setState({
sumprice : sum,
sumcount : count </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">结算个数</span>
<span style="color: rgba(0, 0, 0, 1)"> })
}</span></pre>
</div>
<p> </p>
<p> 6、当进行 数量 的增加、减少、单选按钮、全选按钮的时候 都要重新调用计算总价的函数。</p>
<p> ============================================================================= </p>
<p> 完整代码:</p>
<p>JS ></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">class CartPage extends Component {
state </span>=<span style="color: rgba(0, 0, 0, 1)"> {
datalist:[
{
</span>"imgUrl":"https://wochu.oss-cn-hangzhou.aliyuncs.com/upload/c8db2f99-d79e-4c4a-97e8-3e95c67a3b2e.jpg"<span style="color: rgba(0, 0, 0, 1)">,
</span>"name": "小青菜350g"<span style="color: rgba(0, 0, 0, 1)">,
</span>"newprice" : "4.5"<span style="color: rgba(0, 0, 0, 1)">,
</span>"oldprice" : "4.9"<span style="color: rgba(0, 0, 0, 1)">,
</span>"checked" :<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
</span>"count" :1<span style="color: rgba(0, 0, 0, 1)">
},
{
</span>"imgUrl":"https://img.wochu.cn/upload/abbc6852-711f-4d09-8e61-216c13505ccd.jpg"<span style="color: rgba(0, 0, 0, 1)">,
</span>"name": "洪湖渔家香辣大闸蟹500g"<span style="color: rgba(0, 0, 0, 1)">,
</span>"newprice" : "15.9"<span style="color: rgba(0, 0, 0, 1)">,
</span>"oldprice" : "39.9"<span style="color: rgba(0, 0, 0, 1)">,
</span>"checked" :<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
</span>"count" :1<span style="color: rgba(0, 0, 0, 1)">
},
{
</span>"imgUrl":"https://wochu.oss-cn-hangzhou.aliyuncs.com/upload/c8db2f99-d79e-4c4a-97e8-3e95c67a3b2e.jpg"<span style="color: rgba(0, 0, 0, 1)">,
</span>"name": "小青菜350g"<span style="color: rgba(0, 0, 0, 1)">,
</span>"newprice" : "4.5"<span style="color: rgba(0, 0, 0, 1)">,
</span>"oldprice" : "4.9"<span style="color: rgba(0, 0, 0, 1)">,
</span>"checked" :<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
</span>"count" :1<span style="color: rgba(0, 0, 0, 1)">
},
],
all : </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
sumprice :</span>0<span style="color: rgba(0, 0, 0, 1)">,
one : </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
sumcount:</span>0<span style="color: rgba(0, 0, 0, 1)">
}
render() {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> (
</span><div className={style.cartList}>
<div className={style.cartListItem}>
<ul className={style.shopList} ref="myul"><span style="color: rgba(0, 0, 0, 1)">
{</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 对应的每个购物车条目 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">}
{
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.state.datalist.map((item,index)=>
<li key={index}>
<input type="checkbox" className={style.checkbtn+' '+style.UnChecked}ref="mytext"<span style="color: rgba(0, 0, 0, 1)">
onChange</span>={()=>{<span style="color: rgba(0, 0, 255, 1)">this</span>.handleChange(index)}} checked={item.checked} value=""
/>
<div className={style.shopImg}><span style="color: rgba(0, 0, 0, 1)">
{</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 点击图片跳转到页面详情 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">}
</span><div className={style.shopImgShow}>
<img src={item.imgUrl} alt=""/>
</div>
</div>
{<span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 商品详情 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">}
</span><div className={style.shopInfo}>
<div className={style.shopTitle}>{item.name}</div>
<div className={style.shopCoupen}></div>
<div className={style.shopPrice}>
<div className={style.price}>
<span>¥{item.newprice}</span>
<i>¥{item.oldprice}</i>
</div>
<div className={style.shopSelect}>
<button className={style.minus} onClick={()=>{<span style="color: rgba(0, 0, 255, 1)">this</span>.handleMinus(index)}}>-</button>
<input type="text" value={<span style="color: rgba(0, 0, 255, 1)">this</span>.state.datalist.count||''}/>
<button className={style.add} onClick={()=>{<span style="color: rgba(0, 0, 255, 1)">this</span>.handleAdd(index)}}>+</button>
</div>
</div>
</div>
</li>
<span style="color: rgba(0, 0, 0, 1)"> )
}
</span></ul>
</div>
<div className={style.sum}>
<input type="checkbox" onChange={()=>{<span style="color: rgba(0, 0, 255, 1)">this</span>.handleAll()}} checked={<span style="color: rgba(0, 0, 255, 1)">this</span>.state.all} value=""/>
<div className={style.checkPrice}><span style="color: rgba(0, 0, 0, 1)">
{</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 合算 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">}
</span><div className={style.totalPrice}>
<span className={style.allsum}>合计</span>
<span>¥{<span style="color: rgba(0, 0, 255, 1)">this</span>.state.sumprice}</span>
</div>
{<span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 不含运费 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">}
</span><div className={style.fee}>(不含运费)</div>
</div>
<span style="color: rgba(0, 0, 0, 1)">
{</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 结算按钮 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">}
</span><div className={<span style="color: rgba(0, 0, 255, 1)">this</span>.state.one?style.btnCheck:style.btnNoCheck}><span style="color: rgba(0, 0, 0, 1)">结算
</span><span>({<span style="color: rgba(0, 0, 255, 1)">this</span>.state.sumcount})</span>
</div>
</div>
</div>
<span style="color: rgba(0, 0, 0, 1)"> );
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 单选</span>
<span style="color: rgba(0, 0, 0, 1)"> handleChange(index){
</span><span style="color: rgba(0, 0, 255, 1)">var</span> list = [...<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.state.datalist]
list.checked </span>= !<span style="color: rgba(0, 0, 0, 1)">list.checked
</span><span style="color: rgba(0, 0, 255, 1)">var</span> every=list.every((item,index)=><span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 0, 255, 1)">return</span> item.checked==<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
})
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 单选框中如果有一个是 checked的是true就可以</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> some = list.some((item,index)=><span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> list.checked
})
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.setState({
datalist :list,
all : every,
one : some</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设定结算框的样式是哪个,根据list.checked</span>
<span style="color: rgba(0, 0, 0, 1)"> })
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.SumPrice()
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 全选</span>
<span style="color: rgba(0, 0, 0, 1)"> handleAll(){
</span><span style="color: rgba(0, 0, 255, 1)">var</span> list = [...<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.state.datalist]
</span><span style="color: rgba(0, 0, 255, 1)">var</span> all = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.state.all
all </span>= !<span style="color: rgba(0, 0, 0, 1)"> all
</span><span style="color: rgba(0, 0, 255, 1)">for</span>(<span style="color: rgba(0, 0, 255, 1)">var</span> i = 0 ; i < list.length ;i++<span style="color: rgba(0, 0, 0, 1)">){
list.checked </span>=<span style="color: rgba(0, 0, 0, 1)"> all
}
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.setState({
all : all,
one : all </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">全选的状态直接影响结算框的样式</span>
<span style="color: rgba(0, 0, 0, 1)"> })
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.SumPrice()
}
handleAdd(index){
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设定的value= {this.state.datalist.count}</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> list = [...<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.state.datalist]
list.count</span>++<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.setState({
datalist : list,
})
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.SumPrice()
}
handleMinus(index){
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设定的value= {this.state.datalist.count}</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> list = [...<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.state.datalist];
list.count</span>--<span style="color: rgba(0, 0, 0, 1)">
list.count</span>=list.count<1?1<span style="color: rgba(0, 0, 0, 1)">:list.count;
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.setState({
datalist : list
})
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.SumPrice()
}
SumPrice(){
</span><span style="color: rgba(0, 0, 255, 1)">var</span> sum=0
<span style="color: rgba(0, 0, 255, 1)">var</span> count = 0<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">var</span> list = [...<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.state.datalist]
</span><span style="color: rgba(0, 0, 255, 1)">for</span>(<span style="color: rgba(0, 0, 255, 1)">var</span> i =0; i< list.length ;i++<span style="color: rgba(0, 0, 0, 1)">){
</span><span style="color: rgba(0, 0, 255, 1)">if</span>(list.checked=== <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">){
sum </span>+= list.newprice *<span style="color: rgba(0, 0, 0, 1)">list.count
count </span>+=<span style="color: rgba(0, 0, 0, 1)"> list.count
}
}
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.setState({
sumprice : sum,
sumcount : count </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">结算个数</span>
<span style="color: rgba(0, 0, 0, 1)"> })
}
}
export </span><span style="color: rgba(0, 0, 255, 1)">default</span> CartPage;</pre>
</div>
<p> </p>
<p>CSS ></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">.cartList</span>{<span style="color: rgba(255, 0, 0, 1)">
background</span>:<span style="color: rgba(0, 0, 255, 1)">#f4f5f7</span>;<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">100%</span>;<span style="color: rgba(255, 0, 0, 1)">
top</span>:<span style="color: rgba(0, 0, 255, 1)">.99rem</span>;<span style="color: rgba(255, 0, 0, 1)">
.cartListItem{
width</span>:<span style="color: rgba(0, 0, 255, 1)">100%</span>;<span style="color: rgba(255, 0, 0, 1)">
background</span>:<span style="color: rgba(0, 0, 255, 1)">#fff</span>;<span style="color: rgba(255, 0, 0, 1)">
margin-bottom</span>:<span style="color: rgba(0, 0, 255, 1)">.04rem</span>;<span style="color: rgba(255, 0, 0, 1)">
// 购物车列表
.shopList{
width</span>:<span style="color: rgba(0, 0, 255, 1)">100%</span>;<span style="color: rgba(255, 0, 0, 1)">
// height</span>:<span style="color: rgba(0, 0, 255, 1)">1.11rem</span>;<span style="color: rgba(255, 0, 0, 1)">
padding</span>:<span style="color: rgba(0, 0, 255, 1)">0 .09rem</span>;<span style="color: rgba(255, 0, 0, 1)">
background</span>:<span style="color: rgba(0, 0, 255, 1)">#fff</span>;<span style="color: rgba(255, 0, 0, 1)">
li{
width</span>:<span style="color: rgba(0, 0, 255, 1)">100%</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">1.11rem</span>;<span style="color: rgba(255, 0, 0, 1)">
border-bottom</span>:<span style="color: rgba(0, 0, 255, 1)"> 1px solid #e6e6e6</span>;<span style="color: rgba(255, 0, 0, 1)">
background</span>:<span style="color: rgba(0, 0, 255, 1)"> #fff</span>;<span style="color: rgba(255, 0, 0, 1)">
// 选中按钮
.checkbtn{
width</span>:<span style="color: rgba(0, 0, 255, 1)">.17rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">1.11rem</span>;<span style="color: rgba(255, 0, 0, 1)">
float</span>:<span style="color: rgba(0, 0, 255, 1)">left</span>;
}<span style="color: rgba(128, 0, 0, 1)">
// 选中时候的类名
.UnChecked</span>{<span style="color: rgba(255, 0, 0, 1)">
background</span>:<span style="color: rgba(0, 0, 255, 1)">url("../../../image/cart-img/unselect.png") no-repeat</span>;<span style="color: rgba(255, 0, 0, 1)">
background-size</span>:<span style="color: rgba(0, 0, 255, 1)">100% .25rem</span>;
}<span style="color: rgba(128, 0, 0, 1)">
// 点击图片跳转
.shopImg</span>{<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">1.1rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">1.1rem</span>;<span style="color: rgba(255, 0, 0, 1)">
margin</span>:<span style="color: rgba(0, 0, 255, 1)">0 .1rem</span>;<span style="color: rgba(255, 0, 0, 1)">
float</span>:<span style="color: rgba(0, 0, 255, 1)">left</span>;<span style="color: rgba(255, 0, 0, 1)">
.shopImgShow{
width</span>:<span style="color: rgba(0, 0, 255, 1)">1.1rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">1.1rem</span>;<span style="color: rgba(255, 0, 0, 1)">
img{
width</span>:<span style="color: rgba(0, 0, 255, 1)">100%</span>;
}<span style="color: rgba(128, 0, 0, 1)">
}
}
// 购物车商品详情
.shopInfo</span>{<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">2.08rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">1.1rem</span>;<span style="color: rgba(255, 0, 0, 1)">
padding</span>:<span style="color: rgba(0, 0, 255, 1)">.1rem 0</span>;<span style="color: rgba(255, 0, 0, 1)">
float</span>:<span style="color: rgba(0, 0, 255, 1)">left</span>;<span style="color: rgba(255, 0, 0, 1)">
.shopTitle{
width</span>:<span style="color: rgba(0, 0, 255, 1)">100%</span>;<span style="color: rgba(255, 0, 0, 1)">
overflow</span>:<span style="color: rgba(0, 0, 255, 1)"> hidden</span>;<span style="color: rgba(255, 0, 0, 1)">
white-space</span>:<span style="color: rgba(0, 0, 255, 1)"> nowrap</span>;<span style="color: rgba(255, 0, 0, 1)">
text-overflow</span>:<span style="color: rgba(0, 0, 255, 1)"> ellipsis</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">.3rem</span>;<span style="color: rgba(255, 0, 0, 1)">
font-size</span>:<span style="color: rgba(0, 0, 255, 1)">.14rem</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.shopCoupen</span>{<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">2.08rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">.12rem</span>;<span style="color: rgba(255, 0, 0, 1)">
margin</span>:<span style="color: rgba(0, 0, 255, 1)">.1rem 0</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.shopPrice</span>{<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">2.08rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">.25rem</span>;<span style="color: rgba(255, 0, 0, 1)">
//价格
.price{
width</span>:<span style="color: rgba(0, 0, 255, 1)">1.08rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">.21rem</span>;<span style="color: rgba(255, 0, 0, 1)">
float</span>:<span style="color: rgba(0, 0, 255, 1)">left</span>;<span style="color: rgba(255, 0, 0, 1)">
span{
font-size</span>:<span style="color: rgba(0, 0, 255, 1)">.15rem</span>;<span style="color: rgba(255, 0, 0, 1)">
color</span>:<span style="color: rgba(0, 0, 255, 1)">#f96d16</span>;
}<span style="color: rgba(128, 0, 0, 1)">
i</span>{<span style="color: rgba(255, 0, 0, 1)">
font-size</span>:<span style="color: rgba(0, 0, 255, 1)">.13rem</span>;<span style="color: rgba(255, 0, 0, 1)">
color</span>:<span style="color: rgba(0, 0, 255, 1)">#999</span>;<span style="color: rgba(255, 0, 0, 1)">
text-decoration</span>:<span style="color: rgba(0, 0, 255, 1)"> line-through</span>;<span style="color: rgba(255, 0, 0, 1)">
font-style</span>:<span style="color: rgba(0, 0, 255, 1)">normal</span>;
}<span style="color: rgba(128, 0, 0, 1)">
}
// 按钮
.shopSelect</span>{<span style="color: rgba(255, 0, 0, 1)">
float</span>:<span style="color: rgba(0, 0, 255, 1)">right</span>;<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">.775rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">.25rem</span>;<span style="color: rgba(255, 0, 0, 1)">
.minus{
float</span>:<span style="color: rgba(0, 0, 255, 1)">left</span>;<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">.225rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">.25rem</span>;<span style="color: rgba(255, 0, 0, 1)">
border</span>:<span style="color: rgba(0, 0, 255, 1)">0</span>;
}<span style="color: rgba(128, 0, 0, 1)">
input</span>{<span style="color: rgba(255, 0, 0, 1)">
float</span>:<span style="color: rgba(0, 0, 255, 1)">left</span>;<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">.325rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">.25rem</span>;<span style="color: rgba(255, 0, 0, 1)">
text-align</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;<span style="color: rgba(255, 0, 0, 1)">
border</span>:<span style="color: rgba(0, 0, 255, 1)">0</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.add</span>{<span style="color: rgba(255, 0, 0, 1)">
float</span>:<span style="color: rgba(0, 0, 255, 1)">left</span>;<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">.225rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">.25rem</span>;<span style="color: rgba(255, 0, 0, 1)">
border</span>:<span style="color: rgba(0, 0, 255, 1)">0</span>;
}<span style="color: rgba(128, 0, 0, 1)">
}
}
}
}
}
}
// 合算
div.sum</span>{<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">100%</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">.5rem</span>;<span style="color: rgba(255, 0, 0, 1)">
background</span>:<span style="color: rgba(0, 0, 255, 1)">#fff</span>;<span style="color: rgba(255, 0, 0, 1)">
padding-left</span>:<span style="color: rgba(0, 0, 255, 1)">.1rem</span>;<span style="color: rgba(255, 0, 0, 1)">
position</span>:<span style="color: rgba(0, 0, 255, 1)">fixed</span>;<span style="color: rgba(255, 0, 0, 1)">
bottom</span>:<span style="color: rgba(0, 0, 255, 1)">.5rem</span>;<span style="color: rgba(255, 0, 0, 1)">
left</span>:<span style="color: rgba(0, 0, 255, 1)">0</span>;<span style="color: rgba(255, 0, 0, 1)">
input{
height</span>:<span style="color: rgba(0, 0, 255, 1)">100%</span>;<span style="color: rgba(255, 0, 0, 1)">
float</span>:<span style="color: rgba(0, 0, 255, 1)">left</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.checkPrice</span>{<span style="color: rgba(255, 0, 0, 1)">
float</span>:<span style="color: rgba(0, 0, 255, 1)">left</span>;<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">1.48rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">.41rem</span>;<span style="color: rgba(255, 0, 0, 1)">
line-height</span>:<span style="color: rgba(0, 0, 255, 1)"> .41rem</span>;<span style="color: rgba(255, 0, 0, 1)">
padding</span>:<span style="color: rgba(0, 0, 255, 1)">.08rem 0</span>;<span style="color: rgba(255, 0, 0, 1)">
margin-left</span>:<span style="color: rgba(0, 0, 255, 1)">.1rem</span>;<span style="color: rgba(255, 0, 0, 1)">
// 合计
.totalPrice{
float</span>:<span style="color: rgba(0, 0, 255, 1)"> left</span>;<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">.869rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">.36rem</span>;<span style="color: rgba(255, 0, 0, 1)">
line-height</span>:<span style="color: rgba(0, 0, 255, 1)">.36rem</span>;<span style="color: rgba(255, 0, 0, 1)">
font-size</span>:<span style="color: rgba(0, 0, 255, 1)">.16rem</span>;<span style="color: rgba(255, 0, 0, 1)">
color</span>:<span style="color: rgba(0, 0, 255, 1)">#f96d16</span>;<span style="color: rgba(255, 0, 0, 1)">
.allsum{
font-size</span>:<span style="color: rgba(0, 0, 255, 1)">.13rem</span>;<span style="color: rgba(255, 0, 0, 1)">
color</span>:<span style="color: rgba(0, 0, 255, 1)">#333</span>;
}<span style="color: rgba(128, 0, 0, 1)">
}
// 不含运费
.fee</span>{<span style="color: rgba(255, 0, 0, 1)">
float</span>:<span style="color: rgba(0, 0, 255, 1)">left</span>;<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">.61rem</span>;<span style="color: rgba(255, 0, 0, 1)">
font-size</span>:<span style="color: rgba(0, 0, 255, 1)">.13rem</span>;<span style="color: rgba(255, 0, 0, 1)">
color</span>:<span style="color: rgba(0, 0, 255, 1)">#999</span>;
}<span style="color: rgba(128, 0, 0, 1)">
}
// 结算按钮
.btnCheck</span>{<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">1.15rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">.49rem</span>;<span style="color: rgba(255, 0, 0, 1)">
background</span>:<span style="color: rgba(0, 0, 255, 1)">rgb(249, 109, 22)</span>;<span style="color: rgba(255, 0, 0, 1)">
float</span>:<span style="color: rgba(0, 0, 255, 1)">right</span>;<span style="color: rgba(255, 0, 0, 1)">
line-height</span>:<span style="color: rgba(0, 0, 255, 1)"> .49rem</span>;<span style="color: rgba(255, 0, 0, 1)">
font-size</span>:<span style="color: rgba(0, 0, 255, 1)">.18rem</span>;<span style="color: rgba(255, 0, 0, 1)">
color</span>:<span style="color: rgba(0, 0, 255, 1)">#fff</span>;<span style="color: rgba(255, 0, 0, 1)">
text-align</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.btnNoCheck</span>{<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)">1.15rem</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)">.49rem</span>;<span style="color: rgba(255, 0, 0, 1)">
background</span>:<span style="color: rgba(0, 0, 255, 1)">rgb(153, 153, 153)</span>;<span style="color: rgba(255, 0, 0, 1)">
float</span>:<span style="color: rgba(0, 0, 255, 1)">right</span>;<span style="color: rgba(255, 0, 0, 1)">
line-height</span>:<span style="color: rgba(0, 0, 255, 1)"> .49rem</span>;<span style="color: rgba(255, 0, 0, 1)">
font-size</span>:<span style="color: rgba(0, 0, 255, 1)">.18rem</span>;<span style="color: rgba(255, 0, 0, 1)">
color</span>:<span style="color: rgba(0, 0, 255, 1)">#fff</span>;<span style="color: rgba(255, 0, 0, 1)">
text-align</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;
}<span style="color: rgba(128, 0, 0, 1)">
}
}</span></pre>
</div>
<p> </p><br><br>
来源:https://www.cnblogs.com/rabbit-lin0903/p/11603084.html
頁:
[1]