React: идея: поддержка сокращенного значения свойства литерала объекта в синтаксисе jsx

Созданный на 16 нояб. 2014  ·  3Комментарии  ·  Источник: facebook/react

идея заключалась бы в том, чтобы быть в состоянии сделать:

{this.state.list.map((item, key) => <MyComponent {item, key} />)}

что бы вы об этом подумали?

Все 3 Комментарий

Я склонен сказать нет. Мы много говорили об использовании различных синтаксисов и пытаемся свести их к минимуму. Добавление {...spread} уже было довольно большим делом.

копия @sebmarkbage

Мы стараемся вести обсуждение синтаксиса по адресу: https://github.com/facebook/jsx . Таким образом, у нас может быть более широкая группа, вносящая свой вклад в этот синтаксис, чтобы он стоил дополнительного веса для языка.

Я думаю, что разница между <Foo {item} /> , <Foo {...item} /> и <Foo item /> может быть слишком запутанной. Последние два уже поддерживаются.

Хотя мне нравится ход твоих мыслей. Если вы твердо уверены в этом, вы должны открыть проблему на https://github.com/facebook/jsx .

https://github.com/facebook/jsx/pull/118

^ Предложение по синтаксису выражения объекта, как обсуждается здесь.

Я думаю, что разница между , а также может быть слишком запутанным.

Путаница может быть относительной. <Foo item /> не очень полезен, поскольку всегда оценивается как {item: true}. Оглядываясь назад, он кажется очень ограниченным, но я могу понять его поведение из его html-генов. Лично я особого применения не нашел.

а также не сбивает с толку, если вы посмотрите на это с точки зрения нотации объектов ES8. {item} — это сокращение от {item: item} . {...item} — сокращение для сглаживания/поверхностного копирования/распространения на новый объект.

как только кто-то поймет, что jsx преобразуется в h(name: string | Component, props: {[name]: any}, ...children) . ObjectExpression попадает естественным образом.

Сбивает с толку то, что <Foo {x} /> не поддерживается, а <Foo {...x} /> поддерживается. Обходной путь
<Foo {...{x}} /> , что намного более запутанно.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги