Вы показываете все даты как оригинальные, и при нажатии вы хотите, чтобы все даты на странице были обновлены до форматированной версии даты.
В вашем коде вы фактически изменяете дату в состоянии - но вы не должны этого делать, вместо этого вы должны хранить логическое значение (datesFormatted
), которое сообщит вам, следует ли отображать отформатированную дату или нет.
Ваша функция переключения будет выглядеть следующим образом:
toggleDate() {
// reverse the current state
this.setState({
datesFormatted: !this.state.datesFormatted,
})
}
и ваш код рендеринга даты будет выглядеть так:
{job.StartedOn ? (<span onClick={this.toggleDate}>{this.state.datesFormatted ? moment(job.StartedOn).fromNow() : job.StartedOn}</span>) : 'No date'}
Если вы хотите, чтобы даты изменялись индивидуально, и не все сразу - тогда вы бы хотели, чтобы каждая дата содержала свое собственное состояние. В этом случае вам нужно создать дочерний компонент, который имеет свое собственное состояние.
class DateToggle extends Component {
constructor() {
super();
this.state = {
showFormatted: true,
}
}
handleToggle = () => {
this.setState({
showFormatted: !this.state.showFormatted,
})
}
render() {
let displayDate = this.props.date;
if (this.state.showFormatted) {
displayDate = moment(displayDate).fromNow()
}
return <span onClick={this.handleToggle}>{displayDate}</span>
}
}
, а затем в родительском компоненте вы можете просто указать в нем дату своей работы:
render() {
return jobs.map((job, index) => (<DateToggle date={job.StartedOn} />));
}
Для этого используйте XML-документы. Есть много умных мета-тегов, которые позволят вам помещать в них образцы кода, ссылки между операциями, генерируемые исключения и т. Д.
Затем вы можете использовать Sandcastle (+ некоторый GUI, который вы можете найти в Codeplex) для генерации либо chm или HTML документация.
Использовать вывод XML из компилятора - это хорошо ... но я знаю, что сложно выразить всю сложность службы и ее ожидаемые инварианты, зависимости и т. Д. В одни комментарии Вам лучше поддерживать отдельный реальный документ (Word, HTML,
Я положу свой интерфейсный контракт в общую DLL и раздам это. Он дает им как xml-комментарии к контракту, не раскрывая подробности службы, так и позволяя им внедрять службу в автономном режиме для тестирования, пока они не будут готовы ее использовать. Кроме того, они могут обойти wsdl и использовать ChannelFactory для создания канала.
Я использую два файла XSL - один для документирования WSDL для операций, другой для документирования XSD для передаваемых данных.
К сожалению, до сих пор я не нашел единое связное решение, поэтому я работаю с двумя файлами XSLT, которые преобразуют WSDL и XSD соответственно в документацию HTML.
WSDL Viewer выполняет работу для WSDL и создает первый документ HTML, а xs3p делает то же самое для данных, содержащихся в файле XSD.
Для этого мы используем WCFExtras ( http://www.codeplex.com/WCFExtras ).
Среди других функций он позволяет в реальном времени экспортировать XML-комментарии вашего кода в сгенерированный WSDL, например, проверьте, как эти XML-комментарии:
/// <summary>
/// Retrieve the tickets information for the specified order
/// </summary>
/// <param name="orderId">Order ID</param>
/// <returns>Tickets data</returns>
[OperationContract]
TicketsDto GetTickets(int orderId);
отражаются в WSDL этого интерфейса:
<wsdl:operation name="GetTickets">
<wsdl:documentation>
<summary> Retrieve the tickets information for the specified order </summary> <param name="orderId">Order ID</param> <returns>Tickets data</returns>
</wsdl:documentation>
<wsdl:input wsaw:Action="xxxx" message="tns:PartnerAPI_GetTickets_InputMessage"/>
<wsdl:output wsaw:Action="xxxx" message="tns:PartnerAPI_GetTickets_OutputMessage"/>
</wsdl:operation>
Выдержка из их документации:
Добавление документации WSDL из комментариев XML исходного кода Это расширение позволяет добавлять документацию WSDL (annotaiton) прямо из комментариев XML в исходный файл. Эти комментарии будут опубликованы как часть WSDL и доступны для инструментов WSDL, которые знают, как ими воспользоваться (например, Apache Axis wsdl2java и другие). Версия 2.0 также включает в себя импортер WSDL на стороне клиента, который преобразует эти комментарии WSDL в комментарии XML в сгенерированном коде прокси.