#javascript #reactjs
#javascript #reactjs
Вопрос:
У меня есть следующий функциональный компонент без состояния:
function numberOfReadsControls(props) {
return (
<div>
<ControlLabel>Start Date</ControlLabel>
<DateField
dateFormat="YYYY-MM-DD HH:mm"
defaultValue={props.reportParams.startDate}
updateOnDateClick={true}
onChange={props.startCalOnChange}/>
<br/><br/>
{/* more selectors here, removed for brevity*/}
</div>
);
}
numberOfReadsControls.propTypes = {
startCalOnChange: React.PropTypes.func.isRequired,
//more props removed for brevity
testMissingProp: React.PropTypes.string.isRequired
};
module.exports = {
numberOfReadsControls
}
и я использую эту функцию следующим образом в своей функции рендеринга:
controls = reportControls.numberOfReadsControls(
$.extend({
//props removed for brevity
startCalOnChange: this.startCalOnChange,
}, this.state)
);
затем позже в возврате моей функции рендеринга:
...
return (
<div>
{controls}
</div>
)
Однако я никогда не получаю предупреждение консоли о отсутствующем реквизите «testMissingProp».
Что я делаю не так?
tldr: у меня есть функциональный компонент без состояния с требуемыми реквизитами, но когда он отсутствует, я не получаю никакого оператора регистрации, в котором говорится, что отсутствует реквизит, как и ожидалось
Комментарии:
1. Является ли рендеринг компонента таким, как задумано?
2. Разве вам не
controls
нужно обернуть как{controls}
? В противном случае компонент будет отображаться как<div>controls</div>
3. Компонент отображается точно так, как ожидалось. Единственное, чего мне не хватает, — это ожидаемое предупреждение, сообщающее мне о недостающем реквизите.
4. да, вы правы, он отображается как
{controls}
. Я отредактировал фрагмент5. На мой взгляд, похоже, что вы выполняете что-то вроде завершения обычной обработки компонента react; вы в основном просто вызываете функцию, нет? Например, если вы импортировали его и отобразили как компонент, как
<NumberOfReadControls {...extendedProps} />
я предполагаю, это сработает.