在react中使用intro.js的的一些经验

Posted 如梦令szy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在react中使用intro.js的的一些经验相关的知识,希望对你有一定的参考价值。

  react逐渐热了起来,但是新的东西毕竟前辈的经验少一些,前段时间自己在react中用到intro.js时,得到的资料甚少,摸索后便将一些心得记录下来了~

1 intro.js的引入,这一点请看上一篇博文关于如何在react中引入文件

2 在需要的页面引入文件后, 可以给intro.js的出发点绑定函数

showIntrojs(){
    introJs().start();
  }

  这样intro.js就可以在页面发挥作用了~

3 intro.js只会对整个组件起作用,并且要在组件外面添加一层父元素(div等),然后在div中添加相应的属性,切记不要在组件中直接写intro.js的属性,一些标准通用的属性在react中用驼峰形式的属性写代码在编译时会自动转换成一般的(aB转换为a-b),但是像intro.js他的一些属性是自己封装的,不具有普遍性的,像data-step,data-intro这些属性使用驼峰形式的话不会正确编译。因此我们要在外面再加一层div,按照一般写法输入属性。比如下面的例子:

 <div style={{height, overflow: ‘scroll‘}} data-step="1" data-intro="请输入或者点击相应schema进行查找" id="element1" data-position="right" showStepNumbers="false">
                <SideBar
                  schemas={this.state.schemas}
                  selectedFields={this.state.selectedFields}
                  selectedSchemas={this.state.selectedSchemas}
                  onFilterChange=""
                  onSelectFieldsChange={s => this.setState({selectedFields: s})}
                  onSelectSchema={v => {
                    let selectedSchemas =  this.state.selectedSchemas.concat([v]);
                    this.setState({ selectedSchemas });
                    this.handleSelectedSchemaChange(selectedSchemas);
                  }}
                  onDeselectSchame={ v => {
                    let schemas = this.state.selectedSchemas;
                    schemas.splice(schemas.indexOf(v), 1);
                    this.setState({selectedSchemas: schemas});
                    this.handleSelectedSchemaChange(schemas);
                  }}
                  />
              </div>

4 比较坑的一点是如果你想先只写一个step,调试一下效果。那么就会发现永远也改不好了~他的step要求是<=2。

5 有个小技巧是如果想要在一个地方放多个step,那么久多套几个div好了~

以上是关于在react中使用intro.js的的一些经验的主要内容,如果未能解决你的问题,请参考以下文章

在 foreach 循环中使用 Intro.js 的 php 问题

iframe 中的 Intro.js

Intro.js 网站演示

当我使用 webpack 管理器在我的 angular2 项目中需要 intro.js 时,它可以启动但没有 css

intro.js 将底层元素向左移动并相互重叠

Intro.js 分步向导插件使用方法