react#ReactHTML TypeScript Examples
The following examples show how to use
react#ReactHTML.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: react-utils.ts From utopia with MIT License | 7 votes |
// Utility function to interact with react. Provides the following advantages:
// - forces the use of a key
// - by having key and children as separate properties, the attrs param has the correct shape for the component model
// - it's shorter than createElement :p
// DOM Elements
static create<P extends HTMLAttributes<T>, T extends HTMLElement>(
type: keyof ReactHTML,
props?: { key: Key } & ClassAttributes<T> & P,
...children: ReactNode[]
): DetailedReactHTMLElement<P, T>
Example #2
Source File: dynamicParent.tsx From apps with GNU Affero General Public License v3.0 | 5 votes |
export default function dynamicParent<P, T = Record<string, unknown>>(
loader: () => Promise<LoaderResult<P>>,
placeholder: string | keyof ReactHTML | FunctionComponent<T>,
): React.ComponentType<P & T & { shouldLoad: boolean }> {
return class DynamicParent extends React.Component<
P & T & { shouldLoad: boolean },
{ componentClass?: LoaderResult<P> }
> {
constructor(props: P & T & { shouldLoad: boolean }) {
super(props);
this.state = { componentClass: null };
}
async componentDidMount() {
const { shouldLoad } = this.props;
if (shouldLoad) {
await this.loadComponent();
}
}
async componentDidUpdate(prevProps) {
const { shouldLoad } = this.props;
if (!prevProps.shouldLoad && shouldLoad) {
await this.loadComponent();
}
}
async loadComponent() {
const componentClass = await loader();
this.setState({ componentClass });
}
render() {
const { componentClass } = this.state;
const { children } = this.props;
if (componentClass) {
return React.createElement(componentClass, this.props, children);
}
return React.createElement(placeholder, this.props, children);
}
};
}