2016-12-15 1 views
1

zeigt habe ich einen Feldarray, und ich möchte Felder tauschen darin mit fields.swap (indexA, indexB) und Tasten insiede FeldFeldarray fields.length nicht tatsächliche Größe fields.length

Die Swap-Gabeln fein , aber ich treffe Probleme, wenn ich die Länge der Felder, die ich als Requisiten bekomme, überprüfen möchte. Diese Länge entspricht immer dem Index des Elements, auf das ich geklickt habe. (Wenn ich auf das erste Element geklickt - fields.length wird gleich 1, zehnten - zehn, auch wenn es 20 Elemente in Feldern Array gibt)

vereinfachte Version meines Codes ist dies. Mache ich etwas falsch oder gibt es ein Problem mit Redux-Form?

<FieldArray name="Fields" component={renderFields} /> 
... 
const renderFields= ({ fields, meta: { error } }) => { 
    const handleSwap = function (currentIndex, nextIndex) { 
     //This next line is where I meet the problem 
     //fields.length is always equal to the index of item I clicked 
     if(nextIndex < fields.length) 
     { 
      fields.swap(currentIndex, nextIndex) 
     } 
    } 

return (
    <div> 
     {fields.map((field, index) => 
      <Field 
       onSwap={handleSwap} 
       .... 
      </Field> 
    </div> 
    ) 
} 

kann das Problem sein, wie ich mit handleSwap in der Render-Funktion definieren?

+0

Es gibt keine Probleme mit "Redux-Form", ich bin nicht in der Lage, das Problem zu reproduzieren => [siehe diese Geige] (http://www.webpackbin.com/VJq-bH37z), es funktioniert einfach .. – Freez

+0

@Freez shouldComponentUpdate returning false verursachte dieses Problem, ich änderte meine sollteComponentUpdate, und das ist kein Problem für mich jetzt, aber denken Sie, es ist ein Fehler? Ich modifizierte Geige, um den Fehler – Anarion

+0

http://www.webpackbin.com/VkFLH_3Xf modifizierte Geige zu reproduzieren – Anarion

Antwort

0

zurück false verursachte dieses Problem.

Verwandte Themen