Skip to content

[jsx-runtime] createElement fallback shoud from @jsxImportSource #41146

@morlay

Description

@morlay

if using React.createElement, it is a different results from babel, and will broken react-like lib.

why createElement fallback: facebook/react#20031 (comment)

TypeScript Version: 4.1.0-dev.20201015

Search Terms:

Code

/** @jsxImportSource preact */

const keyBeforeSpread = <span key="a" {...props} />
const keyAfterSpread =<span {...props} key="das" />

Expected behavior:

/** @jsxImportSource preact */
import { jsx } from "preact/jsx-runtime"
import { createElement } from "preact"

const keyBeforeSpread = jsx("span", Object.assign({}, props), "a");
const keyAfterSpread = createElement("span", Object.assign({}, props, { key: "das" }));

Actual behavior:

/** @jsxImportSource preact */
const keyBeforeSpread = _jsx("span", Object.assign({}, props), "a");
const keyAfterSpread = React.createElement("span", Object.assign({}, props, { key: "das" }));

Playground Link:
https://www.typescriptlang.org/play?ts=4.1.0-dev.20201015#code/PQKhAIAECsGcA8CSBbADgewE4BcDK6BXTAYwFNxVNSBDY7cEYAKCePQDtZ6BrUgTwBCpAGZZSuSjQAm4ALzgAPLFTV24Xn1kAialvABvAHTHK6VLAC+4YAD5WHLuv4BBYdlKYJVajNlKVakYmmGaWTppaUtSwerZAA

Related Issues:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions