2017-07-27 3 views
0

ich folgende Komponente:Rückwärts-Taste Reloads vorherige Seite in Reaktion

import React from 'react'; 

const SearchInput = ({className, onChange}) => { 
    const onTextInputChange = (e) => { 
    const value = e.target.value; 
    onChange(value); 
    }; 

    return (
    <textarea 
     className={className} onChange={onTextInputChange}> 
    </textarea> 
) 
}; 

export default SearchInput; 

Aber nach einigem Text füllen und dann zu löschen, wird die vorherige Seite neu geladen wird. Wie kann ich das verhindern?

+0

Können Sie Ihr Problem in https://jsfiddle.net oder in https://codesandbox.io zeigen? – Andrew

+0

@Andrew die App ist zu komplex für das. Aber ich kann sagen, dass in diesem Fall der Textbereich leer wird, kann ich die Funktion nicht debuggen. es mag die textarea selbst ist auf die vorherige Seite umleiten – Chen

+1

ich interessiere mich für 'onChange' -Funktion und in der vorherigen Seite Komponente. – Andrew

Antwort

0

hinzufügen event.preventDefault() in Ihrer Funktion:

const SearchInput = ({className, onChange}) => { 
    const onTextInputChange = (e) => { 
    e.preventDefault(); 
    const value = e.target.value; 
    onChange(value); 
    }; 

    return (
    <textarea 
     className={className} onChange={(e) => onTextInputChange}>  
    </textarea> 
) 
}; 
+0

Ja, ich war das erste, was ich versuchte, es hat nicht funktioniert. – Chen

+0

@Chen können Sie dies versuchen, Hinzufügen von'E on OnChange Attribut. –

+0

Versucht jetzt, naja, nur '(e) => onTextInputChange (e)' hat tatsächlich den Funktionsaufruf gemacht. Und das Problem tritt immer noch auf. – Chen

0

ich die Antwort gefunden! anscheinend auf der onChange von der übergeordneten Komponente, habe ich einen Vergleich zwischen String und Array, es löst eine Ausnahme, die zum Seiten neu laden führen. Dank @Andrew für die Regie in dieser Richtung.

+0

'preventDefault' war notwendig? –

+0

Ich bin froh zu helfen :) – Andrew