开发者的工具库
使用HTML标记的字符串
在浏览器的原生 DOM 编程中,可以使用 innerHTML 属性将一个包含 HTML 标记的字符串插入到特定的 DOM 元素中。
在 React 中,也提供了一种类似的功能,即 dangerouslySetInnerHTML 属性。这个属性允许将包含 HTML 标记的字符串插入到 React 组件中,并将其作为原始 HTML 渲染出来。但需要注意的是,使用 dangerouslySetInnerHTML 带来了潜在的安全风险,因为绕过了 React 的默认属性转义和防御机制,可能会导致跨站脚本攻击(XSS)等问题。
function MyApp() {
return <div dangerouslySetInnerHTML={{
__html: 'First · Second'
}} />
}
实现SSR
React 已经配备了用于处理 Node 服务器上页面渲染的功能,可以通过使用特殊版本的 DOM 渲染器。
import ReactDOMServer from 'react-dom/server'
import App from './App'
ReactDOMServer.renderToString(<App />)
此方法将以字符串形式输出常规 HTML,然后将其作为服务器响应的一部分放在页面正文中。
严格模式
React.StrictMode 是一个有用的组件,用于突出显示应用程序中的潜在问题,这些检查仅适用于开发模式。
return (
<React.StrictMode>
<>
<ComponentOne />
<ComponentTwo />
</>
</React.StrictMode>
)
强制渲染
可以通过调用 forceUpdate() 来告诉 React,当前组件需要重新渲染。
component.forceUpdate(callback)
触发点击事件
在 render 方法中创建一个 ref
<input ref={input => this.inputRef = input} />
在事件处理器中触发点击事件
this.inputRef.click()
错误边界
React 中的一种组件,用于捕获并处理子组件中的 JavaScript 错误。
class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
static getDerivedStateFromError(error) {
// 更新状态使下一次渲染可以显示备用 UI
return { hasError: true };
}
componentDidCatch(error, errorInfo) {
// 可以在此处记录错误信息
console.error("Error:", error);
console.error("Error Info:", errorInfo);
}
render() {
if (this.state.hasError) {
// 显示备用 UI
return <h1>Something went wrong.</h1>;
}
return this.props.children;
}
};
将需要进行错误捕获的子组件包裹在 ErrorBoundary 组件中
<ErrorBoundary>
<MyApp />
</ErrorBoundary>
使用Web Components
index.tsx
import React from 'react';
import '@vaadin/vaadin-date-picker';
class MyApp extends React.Component {
render() {
return (
<div>
<vaadin-date-picker label="When were you born?"></vaadin-date-picker>
</div>
);
}
};
export default MyApp;
动态导入
动态导入语法是 ECMAScript 提案,可以使用动态导入来实现代码拆分。
import("./math").then(math => {
console.log(math.add(10, 20));
});