【发布时间】:2017-07-07 08:36:51
【问题描述】:
我的应用应该呈现大约 30000 个 svg 元素,具体取决于路线。 如果路由类似于 www.myapp.com/svg-data/person 它应该呈现 person.svg。
稍后(相同路线),可以修改此 svg:添加背景颜色、一些文本或一些预定义图层。 我想我应该将 svg 作为反应组件加载。我正在查看库 https://github.com/boopathi/react-svg-loader,但我认为它不符合我的目的。
我最后的想法是获取 svg 数据作为字符串并将其呈现在一个组件中,该组件返回一个 svg 等等...
我应该构建一个通用组件,它呈现作为参数的任何 svg:
componentDidMount() {
if (this.props.params.searchText) {
this.props.requestSVG(this.props.params.searchText)
}
}
componentWillReceiveProps(nextProps) {
if (this.props.params.searchText !== nextProps.params.searchText) {
this.props.requestSVG(nextProps.params.searchText)
}
}
此组件将呈现如下内容:
render() {
const {svgData, textForSVGData} = this.props
let svgText=null
if (textForSVGData) {
svgText= <text x='250' y='150' font-size='55'> {textForSVGData} </text>
}
return (
<svg>
{this.props.svgData}
{svgText}
</svg>
)
}
根据道具,它应该根据需要添加文本或任何其他内容。我错过了什么吗?这是做到这一点的好方法吗?
【问题讨论】: