在React State中传递html标记的正确方式是什么
What is correct way of passing html tags in React State?
我正在使用React创建博客。我计划把博客的主要内容从服务器上带来,并通过Props/State传递给React组件。博客内容可以有html标签,如:
- 大宗报价
- h2和h3
- img、视频、嵌入代码等
我希望将博客的内容与这些标签一起存储在Database/json文件中,并在页面加载时呈现内容。但在React中似乎很难做到这一点。有三种方法可以实现这一点:
- 危险的SetInnerHTML
- 将内容存储在表单数组对象[html content]中(将字符串内容推送到数组中不起作用)
- 为所有html实体传递unicode字符
这个问题很好地讨论了这些方法:
使用reactjs 渲染原始html
我的查询是:
- 是否应该对整个流程/体系结构进行更改以处理此问题
- 从ajax调用中插入大型html内容以反应组件进行渲染的最佳方式是什么
- 要做出功能齐全、动态/可扩展的博客,应该考虑哪些设计决策
- 如何对博客内容(存储在某些文件/数据库中)等动态内容进行SEO
dangerouslySetInnerHTML
没有什么特别之处。无论是否使用React,从javascript渲染HTML都可能是危险的,这取决于所述HTML的来源。例如,如果您正在呈现自己创建并保存到数据库中的帖子,则没有危险(除非您的数据库已被破坏)。但假设你在帖子上有评论,用户会发送恶意代码作为评论。所有访问该页面的其他用户都会从数据库中获取恶意代码,并在浏览器上"危险地"执行。因此,您需要做的是,通过在保存到数据库之前清除任何用户输入,确保HTML的来源是安全的。有一些库可以用来实现这一点,例如-http://htmlpurifier.org/
关于SEO,您可以使用服务器端渲染-https://www.smashingmagazine.com/2016/03/server-side-rendering-react-node-express/
确保你在url上有所有需要的信息,这样你就不会依赖"状态"来呈现页面,比如post-id等。你可以通过使用React Router来实现这一点https://github.com/reactjs/react-router
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 在ng重复循环中显示条件内容的最佳方式是什么
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 在node.js中编写单元测试的最佳方式是什么
- 使用AJAX在Rails中提交动态表单的最佳方式是什么
- 使用Angular存储用户以前是否选中过复选框,然后再调用它的最佳方式是什么
- 在AngularJS中使用多个主题的最佳方式是什么
- 存储数据的最佳方式是什么,以便与jquery一起使用
- 为Google闭包类定义属性的首选方式是什么
- 用JavaScript随机给网页上的每个字母上色的最佳方式是什么
- 将JavaScript检测与MVC4显示模式集成的最佳方式是什么
- 正确的使用方式是什么.js与网络工作者
- 在客户端调整图像大小/裁剪图像的最佳方式是什么
- 大规模保存cookie的最佳方式是什么
- Vue.js中端到端(e2e)测试的正确方式是什么
- 在JavasciptMVC中存储常量值的最佳方式是什么
- 在angular js中,每次应用程序进入状态时,重新加载状态的最佳方式是什么
- 在项目中组织CSS/JavaScript的最佳方式是什么
- 在JavaScript中,最紧凑、最优雅、最高效的四舍五入方式是什么
- Angular:将对象存储在服务中以在视图中显示和将crud函数存储到服务器的最佳方式是什么