Я начинаю реализовывать шаблон умного/немого компонента, где «немой» компонент ничего не знает об окружающей среде и получает все свои данные через реквизиты. Что вы делаете, когда немой компонент должен отправлять или изменять данные? Как он может общаться с внешним миром и все еще быть «глупым»?реагировать на умный/немой шаблон компонента для изменения данных
Вот мой основной пример, который я использую, чтобы определить этот шаблон. Если бы я должен был добавить событие onClick
к компоненту MyTask
, который обновил счетчик в БД, что бы обработало это событие?
// components/MyList.jsx
import React from 'react';
export default class MyList extends React.Component {
render() {
return(
<div>
<h3>{this.props.listName}</h3>
<ul>
{this.props.tasks.map((task) => (
<MyTask key={task.id} task={task} />
))}
</ul>
</div>
);
}
}
MyList.propTypes = {
listName: React.PropTypes.string.isRequired,
tasks: React.PropTypes.array.isRequired,
}
export class MyTask extends React.Component {
render() {
return (
<li>{this.props.task.text}</li>
);
}
}
MyTask.propTypes = {
task: React.PropTypes.object.isRequired,
}
и приложение:
// app.jsx
import React from 'react';
import MyList from './components/MyList.jsx'
export class TaskApp extends React.Component {
getList() {
return('Today Stuff');
}
getTasks() {
return([
{id: 1, text: 'foo'},
{id: 2, text: 'diggity'},
{id: 3, text: 'boo'},
{id: 4, text: 'bop'}
]);
}
render() {
return (
<MyList listName={this.getList()} tasks={this.getTasks()} />
);
}
}
Принятый ответ за более подробное объяснение. Спасибо! – Scott
Можете ли вы показать пример двух разных привязок 'this', пожалуйста? Это будет очень тщательный ответ с этим дополнением. – Scott
Добавил несколько дополнительных примеров связывания контекста с ответом. Ура! –