Ich verwende Sortable (https://github.com/RubaXa/Sortable), um eine Liste von Elementen, die ich habe, ziehen und sortieren zu können. Ich möchte, dass dies auf componentDidMount
geladen wird und die tatsächliche Sortierfunktion funktioniert. Wenn es jedoch zur Ajax-Anfrage kommt, bekomme ich eine 400 schlechte Anfrage. Ich denke, es hat etwas mit dem Kontext zu tun, in dem es sich befindet, aber ich dachte, ich sortiere das aus.Ungültige Anforderung von componentDidMount
Wenn ich ComponentDidMount einfach auslassen und einfach die Funktion an das Listenelement anhängen, funktioniert die Anfrage einwandfrei. Das einzige, was mich davon abhält, dies zu tun, ist, dass das Listenelement einen Klick erfordert, bevor es sortierbar geladen wird.
Irgendwelche Vorschläge? Vielen Dank!
var ToDoList = React.createClass({
getInitialState: function() {
return {}
},
componentDidMount: function(){
this.moveItem();
},
moveItem: function(id){
var el = document.getElementById('list');
var sortable = Sortable.create(el, {
onSort: function(evt) {
var data = { todo_id: id, old_index: evt.oldIndex , new_index: evt.newIndex }
$.ajax({
url: "/todo/api/v1.0/move-task",
type: "POST",
data: data,
context: this,
success: function(data, status, xhr) {
var updated_todos = this.props.changeTodos(data);
}
});
}
});
},
render: function(){
return (<ul id="list">
{this.props.todos.map((todo, index) => (
<li onMouseDown={this.moveItem.bind(this, todo._id.$oid)} key={todo._id.$oid} data-id={todo._id.$oid} className={"list-item"}>
<input checked={todo.complete} onChange={this.completeItem.bind(this, todo._id.$oid)} type="checkbox" />
<div className={"item " + todo.complete }>{todo.item}</div>
<div className="move">△▽</div>
<div className="delete" onClick={this.deleteItem.bind(this, todo._id.$oid)}>x</div>
</li>
))}
</ul>
);
}
});
Sie rufen 'this.moveItem();' ohne ID – degr
dachte, dies sei der Fall. Wie würde ich die ID an die 'componentDidMount' Funktion übergeben? – luke
Warum versuchen Sie, ein Element in componentDidMount() zu verschieben? componentDidMount wird nur einmal aufgerufen. Ich kann verstehen, dass du vielleicht die Liste dort vorlädst, aber das Verschieben eines der Elemente scheint keinen Sinn zu ergeben. Was ist deine Absicht dort? Was versuchst du zu machen? es wird helfen, die richtige Antwort zu finden –