Wie zu zwingen, wieder aufstecken auf React-Komponenten?

Können sagen, ich habe eine view-Komponente, die eine bedingte render:

render(){
    if (this.state.employed) {
        return (
            <div>
                <MyInput ref="job-title" name="job-title" />
            </div>
        );
    } else {
        return (
            <div>
                <MyInput ref="unemployment-reason" name="unemployment-reason" />
                <MyInput ref="unemployment-duration" name="unemployment-duration" />
            </div>
        );
    }
}

MyInput sieht ungefähr so aus:

class MyInput extends React.Component {

    ...

    render(){
        return (
            <div>
                <input name={this.props.name} 
                    ref="input" 
                    type="text" 
                    value={this.props.value || null}
                    onBlur={this.handleBlur.bind(this)}
                    onChange={this.handleTyping.bind(this)} />
            </div>
        );
    }
}

Lässt sagen employed wahr ist. Immer wenn ich schalten Sie ihn auf "false" und die andere Ansicht dargestellt wird, nur unemployment-duration neu initialisiert wird. Auch unemployment-reason wird vorbelegt mit dem Wert aus job-title (wenn ein Wert gegeben wurde, bevor die Bedingung geändert).

Wenn ich das markup in der zweiten rendering-routine, so etwas wie dieses:

render(){
    if (this.state.employed) {
        return (
            <div>
                <MyInput ref="job-title" name="job-title" />
            </div>
        );
    } else {
        return (
            <div>
                <span>Diff me!</span>
                <MyInput ref="unemployment-reason" name="unemployment-reason" />
                <MyInput ref="unemployment-duration" name="unemployment-duration" />
            </div>
        );
    }
}

Wie es scheint, funktioniert alles einwandfrei. Sieht aus wie Reagieren versagt zu diff 'job-Titel' und 'Arbeitslosigkeit-Grund'.

Mir bitte sagen, was ich falsch mache...

Was ist der data-reactid auf jeder der MyInput (oder input, wie in DOM) Elemente auf, die vor und nach der employed wechseln?
Ich konnte nicht angeben, dass die MyInput-Komponente macht den Eingang, eingewickelt in ein <div>. Die data-reactid Attribute scheint das anders zu sein sowohl auf der Verpackung div und das Eingabefeld. job-title input bekommt-id data-reactid=".0.1.1.0.1.0.1", während unemployment-reason input bekommt-id data-reactid=".0.1.1.0.1.2.1"
und was ist mit unemployment-duration?
Sorry, ich Sprach zu früh. Im ersten Beispiel (ohne die "diff zu mir" span) die reactid Attribute identisch sind job-title und unemployment-reason wird, während im zweiten Beispiel (mit den diff-Bereich) Sie sind anders.
für unemployment-duration die reactid Attribut ist immer einzigartig.

InformationsquelleAutor o01 | 2016-03-04

Schreibe einen Kommentar