react插件(react插件开发)

http://www.itjxue.com  2023-02-16 14:29  来源:未知  点击次数: 

react插件可以写js代码不用写类型

使用插件 react-load-script

如果没有安装可以使用

yarn add react-load-script

或者

npm install react-load-script

,看你使用哪个包管理工具。

然后你就可以像使用React组件那样插入JS,如下代码。

import React from 'react';

import Script from 'react-load-script';

class DynamicScriptExample extends React.Component {

constructor(props) {

super(props);

this.state = {

scriptStatus: 'no'

}

}

handleScriptCreate() {

this.setState({ scriptLoaded: false })

}

handleScriptError() {

this.setState({ scriptError: true })

}

handleScriptLoad() {

this.setState({ scriptLoaded: true, scriptStatus: 'yes' })

}

render() {

return (

Script

url=""

onCreate={this.handleScriptCreate.bind(this)}

onError={this.handleScriptError.bind(this)}

onLoad={this.handleScriptLoad.bind(this)}

/

div动态脚本引入状态:{this.state.scriptStatus}/div

/

);

}

}

export default DynamicScriptExample;

react倒计时插件react-countdown

最近做next.js项目,项目中有个倒计时的需求,于是上github上找了找发现了一个挺好的插件react-countdown推荐给大家,github地址:

npm install react-countdown --save

yarn add react-countdown

import Countdown from 'react-countdown';

Countdown date={Date.now() + 10000} /

这是一个倒计时为10秒的示例,以毫秒为单位显示总时间差。

如果不对显示做处理默认在页面中的显示是:00:00:00:00对应-天、小时、分、秒

插件提供了两个属性:

1、daysInHours

Boolean类型的值默认为false;设为true时,它可以将天数转化为小时表示

2、zeroPadTime

Number类型的值,设置时间显示几位数,不够的用0填充,不设置这个属性的话当小时或者秒为一位数时展示一位数

另外react-countdown还给我们提供了一个renderer属性,它接收一个方法,如果我们有特殊需求如倒计时完成后要显示什么内容可以通过renderer接收的方法中实现。

在项目倒计时中一般会进行时间差值来计算剩余时间,我在项目中进行差值计算时遇到一个bug,在chrome中倒计时正常显示但在safari中倒计时没有显示,查了资料发现safari浏览器在时间处理上有一些兼容性问题。后端返回的时间格式是:2020-3-14 00:00:00,用new Date()转化后结果是Invalid Date,再getTime()得到的是NaN。原来safari不支持这种格式,把时间格式中的"-"全部替换为"/"就可以获取到时间戳了。

react-countdown插件中还提供了很多属性,有兴趣的可以上github上自行查阅。

react中使用G2插件实现折线图

效果图

1、引入

2、?componentDidMount函数中获取数据并渲染

componentDidMount() {

? ? let params = {};

? ? api.getMeetingDurationChart(params).then(res = {

? ? ? if (res.responseObject) {

? ? ? ? for (let index in res.responseObject.charts) {

? ? ? ? ? var item = res.responseObject.charts[index];

? ? ? ? ? item.value = totalTime(item.value);

? ? ? ? }

? ? ? ? this.setState({

? ? ? ? ? data: res.responseObject

? ? ? ? });

? ? ? ? //折线部分

? ? ? ? const chart = new G2.Chart({

? ? ? ? ? container: 'charts',

? ? ? ? ? height: 60,

? ? ? ? ? forceFit: true,

? ? ? ? ? padding: 'auto'

? ? ? ? });

? ? ? ? chart.scale('value', {

? ? ? ? ? min: 0

? ? ? ? });

? ? ? ? chart.scale('time', {

? ? ? ? ? range: [0, 1]

? ? ? ? });

? ? ? ? chart

? ? ? ? ? .area()

? ? ? ? ? .color('#AFDEFF')

? ? ? ? ? .position('time*value')

? ? ? ? ? .shape('smooth');

? ? ? ? chart.tooltip({

? ? ? ? ? offset: 2,

? ? ? ? ? title: null,

? ? ? ? ? custom: true,

? ? ? ? ? inPlot: false,

? ? ? ? ? customFollow: true,

? ? ? ? ? showTitle: false,

? ? ? ? ? crosshairs: false,//垂直标准线

? ? ? ? ? useHtml: true,

? ? ? ? ? htmlContent: (title, items) = {

? ? ? ? ? ? return (

? ? ? ? ? ? ? 'div class="tooltip-custom"pspan class="point"/span' +

? ? ? ? ? ? ? title +

? ? ? ? ? ? ? '/pp' +

? ? ? ? ? ? ? items[0].value +

? ? ? ? ? ? ? '/p/div'

? ? ? ? ? ? );

? ? ? ? ? }

? ? ? ? });

? ? ? ? chart

? ? ? ? ? .line()

? ? ? ? ? .color('#199FFF')

? ? ? ? ? .position('time*value')

? ? ? ? ? .size(2)

? ? ? ? ? .shape('smooth'); //平滑过渡

? ? ? ? chart.axis('time', false);

? ? ? ? chart.axis('value', false);

? ? ? ? chart.source(this.state.data.charts);

? ? ? ? if (this.state.data.charts.length == 1) {

? ? ? ? ? chart

? ? ? ? ? ? .point()

? ? ? ? ? ? .position('time*value')

? ? ? ? ? ? .size(2)

? ? ? ? ? ? .shape('circle')

? ? ? ? ? ? .style({

? ? ? ? ? ? ? lineWidth: 1

? ? ? ? ? ? });

? ? ? ? }

? ? ? ? setTimeout(() = {

? ? ? ? ? const e = document.createEvent('Event');

? ? ? ? ? e.initEvent('resize', true, true);

? ? ? ? ? window.dispatchEvent(e);

? ? ? ? }, 50);

? ? ? ? chart.render();

? ? ? } else {

? ? ? ? message.warning(res.message);

? ? ? }

? ? });

? }

3、渲染节点

react 页面缓存插件react-router-cache-route

此插件可以满足缓存上一页的功能,即:返回上一页的时候,上一页的滚动条、动作状态等等和离开这个页面时的状态保持一致。

搭配 react-router 工作的、带缓存功能的路由组件,类似于 Vue 中的 keep-alive 功能。

Route 中配置的组件在路径不匹配时会被卸载(render 方法中 return null),对应的真实节点也将从 dom 树中删除,利用Route暴露的children方法,让我们手动控制渲染。

注意:作者测试使用时版本为1.4.6

缓存语句不要写在 Switch 组件当中,因为 Switch组件会卸载掉所有非匹配状态下的路由,需使用 CacheSwitch 替代 Switch。

使用 when 属性决定何时使用缓存功能,可选值为 [forward, back, always] ,默认值为 forward。

使用 className 属性给包裹组件添加自定义样式。

也可以使用 behavior 属性来自定义缓存状态下组件的隐藏方式,工作方式是根据 CacheRoute 当前的缓存状态,返回一个作用于包裹组件的 props。

使用 CacheRoute 的组件将会得到一个名为 cacheLifecycles 的属性,里面包含两个额外生命周期的注入函数 didCache 和 didRecover,分别用在组件 被缓存 和 被恢复 时

github地址

react-native常用插件

顶部tab切换:npm install @react-navigation/material-top-tabs react-native-tab-view

react-native-shadow

react-native-linear-gradient

(责任编辑:IT教学网)

更多

推荐新手入门文章