Ich möchte explizit alle meine Requisiten für jede Klasse angeben.ReactJS: Wie kann ich Requisiten und Formen für Objekte modularer verwenden?
React.createClass({
propTypes: {
optionalArray: React.PropTypes.array,
optionalBool: React.PropTypes.bool,
...
Dies ist aus der Lektüre wieder verwendbare Komponenten: https://facebook.github.io/react/docs/reusable-components.html
Was aber, wenn ich eine sehr häufige Aufgabe, die ich in vielen Klassen verwenden? Zum Beispiel:
var MemoryForm = React.createClass({
propTypes: {
memory: React.PropTypes.shape({
memoryID: React.PropTypes.number,
content: React.PropTypes.string,
date: React.PropTypes.object,
dateStr: React.PropTypes.string,
note: React.PropTypes.string
}).isRequired,
...
var MemoriesArea = React.createClass({
propTypes: {
// The initial memory to fill the memory form with.
formMemory: React.PropTypes.shape({ // <== shape used again
memoryID: React.PropTypes.number,
content: React.PropTypes.string,
date: React.PropTypes.object,
dateStr: React.PropTypes.string,
note: React.PropTypes.string
}).isRequired,
// ...
var Playground = React.createClass({
getInitialState: function() {
var initVars = {
// The initial memory to fill the memory form with.
formMemory: { // <== shape is used again.
memoryID: 0,
content: "",
date: null,
dateStr: "",
note: ""
}
};
return initVars;
}
//...
Hier verwende ich die ‚Gedächtnis‘ Form sehr häufig in dem prop-Typ für verschiedene Klassen, sowie in einigen Initialisierungen. Wie kann man dies DRYer machen - d. H. Weniger Code-Duplikation, so dass eine Änderung dieser Objektform in der Zukunft besser zu warten ist?
Das ist ziemlich glatt. Wie steuern Sie das Hinzufügen/Entfernen von isRequired? –
Sieht aus, als wäre mein Anliegen ein Fehler in eslint-plugin-react - https://github.com/yannickcr/eslint-plugin-react/issues/1389. Sie können 'MemoryPropTypes.isRequired' hinzufügen, müssen aber eslint ausschalten (zumindest für den Moment). Fügen Sie diesen Kommentar '// eslint-disable-next-line react/no-typos' oberhalb der vorherigen Zeile ein. Ich denke, wenn Sie 'memoryID' oder irgendeinen anderen verschachtelten PropType benötigen, müssen Sie einen komplett neuen PropType in der' lib/PropTypeValues.js' Datei erstellen, richtig? –