online二级结构-产品详情页

2018-11-08  本文已影响0人  前端伊始

开发就绪

1. clone项目到本地后,需要npm install..但是一般都要先按照公司的npm镜像
2. react中可以用ref属性来获取dom节点。。所以要在在使用ref属性时先判断该节点是否存在
3. 在react语法的js文件中添加样式,是这样子的

<div   stye={{ textAlign: ‘center’, color: ‘red’ } }></div>

4.一般需要用到state的采用类组件形式写组件,因此对于无状态组件用函数的形式

类组件定义: class Com extends Component { 。。。 }        export default Com;  
无状态组件定义: export default function Com(props){ let info = props.info; }

5.图片大小溢出盒子的范围,一开始设置盒子的overflow属性为hidden,图片是不溢出了,但是盒子的右边和下边的边框被图片占着了。后来发现盒子的宽高比例和图片的宽高比例一致,这样就可以直接为img设置 style={{ width: '100%', height: '100%' }}。成功!
6.获取事件位置&&获取元素位置

el. getBoundingClientRect();  //该方法返回的对象中有top,left,right,bottom,width,heigh等6个属性
e.screenX,  e.clientX   handle(event){}

7.组件生命周期

constructor:所有关于组件自身的状态的初始化工作
componentWillMount:一些组件启动的动作,包括像 Ajax 数据的拉取操作、一些定时器的启动等
componentDidMount:
componentWillReceiveProps(nextProps):组件从父组件接收到新的 props 之前调用。
componentWillUpdate():组件开始重新渲染之前调用。
componentDidUpdate():组件重新渲染并且把更改变更到真实的 DOM 以后调用。

8.React中为某个元素绑定了一个点击事件跳转到另一个链接,为什么还没点击这个元素,就自动执行这个事件了,跳转过去了。

<div onClick={this.jump(href)}></div>
<div onClick={() => this.jump(href)}></div>  //不想自动跳转的正确写法

2018.8.10

<div className=”mask” onClick={this.closeMask}>
  <div className=”content”onClick={e => e.stopPropagation()}></div>
</div>

2018.8.29

2018.10.16

测试今个册数来的bug: 手动输入10, 20 ,30, 40, 。。。。。失效


image.png
 goToPage = () => {
    const { page } = this.state;
    debugger
    if (!page.trim() || !(/^[1-9]*$/.test(page.trim()))) {
      return;
    }
    const handler = this.props.onPageChanged;
    if (handler && this.props.total) handler(Number(page) - 1);
  };

用户点评没有解析表情包

image.png

直接用dangerouslySetInnerHTML 解析字符串就好了

关于空格的几种用法

<div style="letter-spacing:20px">欢迎光临!</div>//  欢 迎 光 临

设置文本中单词之间的间隔,它的取值可以是一个带单位的长度值

 <div style="word-spacing:20px">Happy new year!</div>  

有时候,文章每个段落需要缩进


上线后bug追踪

1.为一句话添加icon,可以使用如下方法

<span>人群说明</span>
// css
span:before {
   content: '';
   background-image: url();
   background-size: 12px 12px;
   backgroun-position:  0px -19px;
}
或者
在span标签前面加一个<i></i>标签

** 2.添加 立即预订按钮,吸顶展示 **

bookNow = () => {
    let absoluteHeight = this.refs.wrapper.offsetTop;
    let browerHeight = window.innerHeight;
    if(absoluteHeight > browerHeight ) {
      if (document.documentElement) {
        document.documentElement.scrollTop = absoluteHeight - browerHeight;
      }else {
        document.body.scrollTop = absoluteHeight - browerHeight;
      }
    } 
  }
 

3.性能优化时候,打包css文件。。gulp 的使用

//安装
npm install -g gulp
gulp -v  // 报错, ,,gulp: command not found
// 原来不是没有安装好gulp包,而是npm的环境变量没设置对
gulp default..

4. 用户点评数据按时间逆序

if (POIInfo.length && POIInfo[0].comments) {
      comments = POIInfo[0].comments;
      comments.sort(function(a, b) {
        return a.date < b.date;
      });
    }

5. poi点评中游玩景点简介加垂直滚动条: overflow-y: auto;
6. input框只能输入数字,

//原理就是将所有的非数字替换为空
<inptut type="text" onKeyUp={ e.target.value => {e.target.value.replace(/[^\d]/g,'')} } />
//当然0开头的数字也是不允许的,那么改为如下(^表示开头,$表示末尾,)
<inptut type="text" onKeyUp={ e.target.value => {e.target.value.match(/^[1-9]\d*$/g)} } />
另外补充:*和+的区别
*表示匹配前面的子表达式零次或多次,等价于{0,}
+表示匹配前面的子表达式1次或多次,等价于{1,}
正则方法.png

7.鼠标禁用样式 cursor:not-allowed 鼠标等待样式 cursor: wait
8. css制作销售属性选中效果

image.png
<div>上海自取<i></i></div>

div {
    height: 28px;
    border: 2px solid #2680ff;
    position: relative;
}
div i {
  display: block;
  position: absolute;
  border-bottom: 11px solid #2680FF;
  border-left: 18px solid transparent;
  width: 0px;
  height: 0px;
  bottom: 0;
  right: 0;
}
div i:after {
  position: absolute;
  content: '\2714';  // 
  color: #fff;
  left: -10px;
  top: 0;
  font-size: 8px;
}
//或者写成如下
div i:after {
  position: absolute;
  content: '';  // 如果把图片的url写在这里,就不能设置图片的大小了,所以才用了 
    background属性
  background-image: url(https://pages.c-ctrip.com/activity/online/detail_smallok.png);
  background-size: 8px 8px;
  width: 8px;
  height: 8px;
  left: -7px;
  top: 4px;
  font-size: 8px;
}


  1. 两个接口拿到的评分兼容
    let score = cmtscore || commentInfo.score;
    console.log('0' || 5); // '0'
    console.log(0 || 5); // 5
上一篇下一篇

猜你喜欢

热点阅读