У меня может быть такой функциональный компонент:
const FuncList = ({ name }) => {
return (
<div className="shopping-list">
<h1>Shopping List for {name}</h1>
<ul>
<li>Instagram</li>
<li>WhatsApp</li>
<li>Oculus</li>
</ul>
</div>
)
}
Я могу создать его экземпляр, чтобы увидеть в основном все содержимое элемента:
const obj = FuncList({ name: 'Pete' })
console.log(JSON.stringify(obj, null, 4))
-----
{
'type': 'div',
'key': null,
'ref': null,
'props': {
'className': 'shopping-list',
'children': [
{
'type': 'h1',
'key': null,
'ref': null,
'props': {
'children': [
'Shopping List for ',
'mike'
]
},
'_owner': null,
'_store': {}
},
{
'type': 'ul',
'key': null,
'ref': null,
'props': {
'children': [
{
'type': 'li',
'key': null,
'ref': null,
'props': {
'children': 'Instagram'
},
'_owner': null,
'_store': {}
},
....
]
},
'_owner': null,
'_store': {}
}
]
},
'_owner': null,
'_store': {}
}
Теперь, когда я использую его с синтаксисом JSXэто:
const obj = <JSXList name="Pete" />;
// same as: const obj = React.createElement(JSXList, { name: "Pete" });
console.log(JSON.stringify(obj, null, 4))
Я получаю почти пустой объект.Где хранится ссылка на JSXList?Где все свойства?Они как-то спрятаны внутри объекта?Похоже, что метод return из JSXList никогда не вызывался, поэтому он никогда не раскрывался, но почему нет ссылки на него?
{
'key': null,
'ref': null,
'props': {
'name': 'Pete'
},
'_owner': null,
'_store': {}
}
Если бы я использовал div вместо JSXLint в качестве первого аргументаЯ бы получил хотя бы свойство type, которое указывало бы назначение элемента.Есть ли какое-то обоснование дизайна за этим?
const obj = React.createElement('div', { name: "Pete" });
console.log(JSON.stringify(obj, null, 4))
Есть ли смысл скрывать эту ссылку?Насколько я могу судить, это своего рода неясный объектный самоанализ.
Вы можете использовать кодовую панель , чтобы поиграть, если хотите.