App
组件,该组件渲染了一个名为Welcome
的子组件,它是一个无状态函数组件。你可以通过以下方式给Welcome
传递一个user
属性:
```jsx
user
传递给组件Welcome
。由于Welcome
是一个无状态函数组件,它可以像这样访问该值:
```jsx
const Welcome = (props) => props
这个值是常见做法,当处理无状态函数组件时,你基本上可以将其视为返回 JSX 的函数的参数。这样,你就可以在函数体中访问该值。但对于类组件,访问方式会略有不同。
Calendar
和CurrentDate
组件。从Calendar
组件渲染CurrentDate
时,从 JavaScript 的Date
对象分配当前日期,并将其作为date
属性传入。然后访问CurrentDate
组件的prop
,并在p
标签中显示其值。请注意,要将prop
的值视为 JavaScript,必须将它们括在花括号中,例如date={Date()}
。
Calendar
组件应该返回单个div
元素。
testString: assert((function() { const mockedComponent = Enzyme.mount(React.createElement(Calendar)); return mockedComponent.children().type() === 'div'; })());
- text: Calendar
组件的第二个子元素应该是CurrentDate
组件。
testString: assert((function() { const mockedComponent = Enzyme.mount(React.createElement(Calendar)); return mockedComponent.children().childAt(1).name() === 'CurrentDate'; })());
- text: CurrentDate
组件应该有一个名为date
的属性。
testString: assert((function() { const mockedComponent = Enzyme.mount(React.createElement(Calendar)); return mockedComponent.children().childAt(1).props().date })());
- text: CurrentDate
的date
属性应该包含一段文本字符串。
testString: assert((function() { const mockedComponent = Enzyme.mount(React.createElement(Calendar)); const prop = mockedComponent.children().childAt(1).props().date; return( typeof prop === 'string' && prop.length > 0 ); })());
- text: CurrentDate
组件应该把date
属性渲染在p
标签内。
testString: assert(/CurrentDate
组件应该把 date
属性渲染在 p
标签内。
testString: let date = "dummy date"; assert((function() { const mockedComponent = Enzyme.mount(React.createElement(CurrentDate, {date})); return mockedComponent.find('p').html().includes(date); })());
```
The current date is:
{ /* change code above this line */ }The current date is: {props.date}
{ /* change code above this line */ }