• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

用Taro写一个微信小程序——渲染HTML

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

???? 在taro小程序里面渲染一段html代码,具体可查看文档https://docs.taro.zone/docs/html

一、渲染 HTML

文档推荐使用 dangerouslySetInnerHTML 方法来渲染HTML。

1、用法

用法很简单,如下:

<View className="taro_html k_html" dangerouslySetInnerHTML={{ __html: html }}></View>

 

2、自定义HTML样式

Taro 提供两种内置样式我们可以直接引入生效,引入后只需将 HTML 容器的 CSS 类设置为 .taro_html就可以了(如上面的例子)

import '@tarojs/taro/html.css'; // 引入taro内置样式文件

我们自己也可以添加类名,对默认样式进行修改(如上面的k_html)

.k_html {
  .img {
    width: 100%;
  }
  .p {
    line-height: 48px;
    text-align: justify;
    font-size: 32px;
    color: $color-black3a;
  }
}

 

3、高级选项transformElement

image的默认mode是scaleToFill,在图片宽高不确认的情况下样式上很难调节(如下图),所以我们要更改image的mode。

 

使用transformElement更改image的mode为widthFix

Taro.options.html.transformElement = (el) => {
  if (el.nodeName === 'image') {
    el.setAttribute('mode', 'widthFix')
  }
  return el;
};

 

二、遇到的问题

在使用transformElement更改image的mode时,我开始将这个方法放到了生命周期函数中执行,这会导致第一次进入页面的时候mode没有更改。

完整示例

import { Component } from 'react'
import Taro from "@tarojs/taro";
import { View } from '@tarojs/components'

Taro.options.html.transformElement = (el) => {
  if (el.nodeName === 'image') {
    el.setAttribute('mode', 'widthFix')
  }
  return el
}

export default class Index extends Component {
  render () {
    return (
      <View className='home' dangerouslySetInnerHTML={{ __html: '<img src="https://a/b/c" />' }} />
    )
  }
}

 

End--------------------------

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
微信小程序在wxml中调用自定义函数发布时间:2022-07-18
下一篇:
微信小程序购物车流程发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap