初遇react,问题不断,react生命周期变化,会随着setState状态改变,昨天遇到个问题,处理到晚上10点,虽然自己琢磨未果,但是对生命周期有了很大的了解;


后续再补充相关知识,先说需求:


想获取对象嵌套对象中的某个属性,把值写入render中,渲染dom


1.

react 中随state状态改变,数据在dom中渲染问题


2.请求到json中图片,title ,描述  

react 中随state状态改变,数据在dom中渲染问题


操作如下:


componentDidMount: function () {
    var _this = this,
        state=_this.state;
    Core.get({
        noDomain: true,
        dataType: 'jsonp',
        jsonpCallback:'callback',
        port: DOMAINNAME + '/v2/goods/GetGoodsDetail?access-token=' + '279a602ab4ca4d84bbc13a6ca9a714c8',
        data: {
            brandCode:brandCode,
            goodsType:1
        },
        callback: function (json) {
            if (json && json.code == 1) {
                var proList = state.proList,
                    goods = json.data.goods,
                    spec = this.state.spec;

                for(var key in goods){
                    spec.push(goods[key]);
                }

                _this.setState({
                    loading: false,
                    goodsTitle: json.data.goodsTitle,
                    banners: json.data.goodsImg,
                    // tags: json.data.tags,
                    goods: json.data.goods,
                    spec:spec
                    /*banners: [
                        "http://www.duocaitou.com/assets/h5/build/img/integral/[email protected]","http://www.duocaitou.com/assets/h5/build/img/integral/[email protected]"
                    ]*/
                });
                

            }



render中的

render: function () {
    var tags = this.state.tags,
        goods = this.state.goods,
        spec = this.state.spec;
    /*for(var key in goods){
        var spec = goods[key];
        for(var x in spec){
            spec[x];
        }
    }*/
    // console.log(spec[0]);
    // console.log(spec.imagePath);
       /* for (var i in goods) {
            spec.push(goods[1]);
            for(var j in spec){
                var imagePath1 = spec[j].imagePath;
            }
        }
        for (var i in goods[2]) {
            spec.push(goods[2]);
            for(var j in spec){
                var imagePath2 = spec[j].imagePath;
            }
        }*/


    return (
        <section className="hotel-detail-wrap">
            <div className="top">
                <div className="goback" onTouchEnd={this.back}>
                    <span className="back"></span>
                </div>
                <div className="swiper-container" id="J_detailPics">
                    <div className="swiper-pagination ks_ts">
                        <div className="hotel-warp">
                            <img src="build/img/integral/[email protected]" alt=""/>
                        </div>
                        <div className="hotel-warp">
                            <img src="build/img/integral/[email protected]" alt=""/>
                        </div>
                        <div className="hotel-warp">
                            <img src="build/img/integral/[email protected]" alt=""/>
                        </div>
                        <div className="hotel-warp">
                            <img src="build/img/integral/[email protected]" alt=""/>
                        </div>
                        <div className="hotel-warp">
                            <img src="build/img/integral/[email protected]" alt=""/>
                        </div>
                        {/*{
                            <Slider type="slider" photos={this.state.banners} />
                        }*/}
                    </div>
                    <ul className="hotel-wt">
                        <li className="hotel-wt2"></li>
                        <li></li>
                        <li></li>
                        <li></li>
                        <li></li>
                    </ul>
                </div>
            </div>

            <div className="detail-info mar_b20">
                <div className="title">
                    {this.state.goodsTitle}
                </div>
                <div className="detail-tags">
                    <ul>
                        {
                            tags.map(function(tag){
                                return <li className="title_tag">{tag}</li>
                            })
                        }
                    </ul>
                </div>
            </div>
            <div className="h20"></div>
            <div className="products clearfix">
                <div className="goods-img">
                    <a href="">
//spec会随着state状态变化,spec打印两次,判断当有值时候,放入链接

                        <img src={spec[0] ? spec[0].imagePath : null} alt=""/>
                    </a>
                </div>
                <div className="goods-about">
                    <p className="title">豪华双床房</p>
                    <p className="description">建筑面积:43m;楼层:1-2楼;床型:双人床2米;可入住:2人</p>
                    <p className="sumPoint">26000<span>积分/晚</span></p>
                    <a href="editOrder.html" className="recharge-btn">
                        <span>立即兑换</span>
                    </a>
                </div>
            </div>
            <div className="h20"></div>
            <div className="products clearfix">
                <div className="goods-img">
                    <a href="">
                        <img src="build/img/integral/[email protected]" alt=""/>
                    </a>
                </div>
                <div className="goods-about">
                    <p className="title">豪华双床房</p>
                    <p className="description">筑面积:43m;楼层:1-2楼;床型:双人床2米;可入住:2人</p>
                    <p className="sumPoint">26000<span>积分/晚</span></p>
                    <a href="editOrder.html" className="recharge-btn">
                        <span>立即兑换</span>
                    </a>
                </div>
            </div>
        </section>
    );
}

相关文章:

  • 2021-12-29
  • 2022-03-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-06-10
  • 2022-02-25
  • 2022-12-23
  • 2022-12-23
  • 2021-10-18
  • 2023-02-13
  • 2021-08-03
相关资源
相似解决方案