React库提供了如下API,可直接调用。
// 函数原型
React.createElement(
type,
[props],
[...children]
)
// 使用jsx创建元素和组件
class Hello extends React.Component {
render() {
return <div>Hello {this.props.toWhat}</div>;
}
}
ReactDOM.render(
<Hello toWhat="World" />,
document.getElementById('root')
);
// 不使用jsx创建元素和组件
class Hello extends React.Component {
render() {
return React.createElement('div', null, `Hello ${this.props.toWhat}`);
}
}
ReactDOM.render(
React.createElement(Hello, { toWhat: 'World' }, null),
document.getElementById('root')
);
// 函数原型
React.cloneElement(
element,
[config],
[...children]
)
// config :含新的 props,key 或 ref
React.cloneElement()
// 几乎等同于下面jsx写法
< element.type {...element.props } {...props }> { children }</element.type >
验证对象是否为 React 元素,返回值为 true
或 false
。
React.isValidElement(object)
React.Children功能:可以遍历访问子元素,同时可以访问到属性 this.props.children
,无法访问到的数据。
React.Children.map(children, function)
const Child = () => (
<div>child</div>
)
class App extends React.Component {
render() {
const template1 = React.Children.map(this.props.children, (child) => {
return React.cloneElement(child);
});
return template1;
}
}
React.Children.forEach(children, function)
React.Children.count(children)
React.Children.only(children)
class Greeting extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
const MyComponent = React.memo(function MyComponent(props) {
/* 使用 props 渲染 */
});
function MyComponent(props) {
/* 使用 props 渲染 */
}
function areEqual(prevProps, nextProps) {
/*
如果把 nextProps 传入 render 方法的返回结果与
将 prevProps 传入 render 方法的返回结果一致则返回 true,
否则返回 false
*/
}
export default React.memo(MyComponent, areEqual);
渲染页面时,可以不加载未用到的组件。
React.Suspense
// 这个组件是动态加载的
const SomeComponent = React.lazy(() => import('./SomeComponent'));
React.lazy
的动态引入特性需要 JS 环境支持 Promise。在 IE11 及以下版本的浏览器中需要通过引入 polyfill 来使用该特性。React.lazy
完成延迟加载。// 该组件是动态加载的
const OtherComponent = React.lazy(() => import('./OtherComponent'));
function MyComponent() {
return (
// 显示 <Spinner> 组件直至 OtherComponent 加载完成
<React.Suspense fallback={<Spinner />}>
<div>
<OtherComponent />
</div>
</React.Suspense>
);
}
render()
返回多个元素。使用详情,看这里转发 refs 到 DOM 组件
、在高阶组件中转发 refs
。详情,看这里原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。