2016-05-26 15 views
8

Nessuno dei demo che ho visto per Draft-js (di Facebook, creato su React) mostra come cancellare il campo di inserimento dopo l'invio. Ad esempio, vedere questo code pen linked to from awesome-draft-js in cui il valore inviato rimane nel campo di inserimento dopo l'invio. Non c'è anche lo function in the api che sembra progettato per farlo. Quello che ho fatto per raggiungere questo obiettivo è quello di creare un nuovo stato vuoto dietro presentazione pulsante mi piace questoCome cancellare il campo di input in Draft-js

onSubmit(){ 
this.setState({ 
    editorState: EditorState.createEmpty(), 
}) 
} 

Tuttavia, dato che creare uno stato vuoto nel costruttore quando l'editor viene caricato come questo

this.state = { 
    editorState: EditorState.createEmpty(), 
    }; 

Sono preoccupato che potrei non farlo nel modo giusto, ovvero il precedente oggetto di stato potrebbe diventare una perdita di memoria. Domanda: qual è il modo previsto per reimpostare lo stato nella situazione precedente (ad es. Invio pulsante)

+3

ho creato un esempio di che cosa siete dopo e sembra funzionare bene. Ho riempito l'editor bozza-js con alcuni contenuti predefiniti su mount. Facendo clic sul pulsante di invio si svuota lo stato usando la funzione 'EditorState.createEmpty()'. Sembra buono http://www.webpackbin.com/NkNbdZlXZ – ctrlplusb

risposta

13

È NON consigliato utilizzare EditorState.createEmpty() per cancellare lo stato dell'editor, è necessario utilizzare solo createEmpty sull'inizializzazione.

Il modo corretto per ripristinare il contenuto del redattore:

import { EditorState, ContentState } from 'draft-js'; 

const editorState = EditorState.push(this.state.editorState, ContentState.createFromText('')); 
this.setState({ editorState }); 

@source: https://github.com/draft-js-plugins/draft-js-plugins/blob/master/FAQ.md

+0

Si consiglia di passare anche il terzo parametro. 'EditorState.push (editorState, ContentState.createFromText (''), 'remove-range')' – Searene

Problemi correlati