Làm thế nào để bạn thay đổi vị trí của một thành phần mục trong phản ứng?React.js: Làm thế nào để bạn thay đổi vị trí của một thành phần mục
Trừ khi tôi đã hiểu sai, hãy phản hồi đơn đặt hàng các mục danh sách theo key
, được biểu diễn trong DOM theo data-reactid
, nhưng tôi không biết cách sửa đổi key
thành phần trên trang.
tức là bạn lấy thành phần như thế nào, thay đổi nó là key
và sau đó kích hoạt kết xuất để danh sách được sắp xếp lại hiển thị theo thứ tự bạn đã đặt?
ví dụ: trong ví dụ mã sau, khi liên kết Click me
được nhấp vào, mục danh sách đầu tiên sẽ được hoán đổi với mục danh sách cuối cùng.
Lý tưởng nhất, chức năng này sẽ cho phép bạn tự động sắp xếp lại/di chuyển bất kỳ thành phần nào trên trang mà không thay đổi thứ tự các thành phần theo phương pháp render
.
Dưới đây là một liên kết đến repo nơi đầy đủ các dự án tọa lạc: https://github.com/bengrunfeld/gae-react-flux-todos
var TodoBox = React.createClass({
render: function(){
return (
<div className="todo-container">
<h4>GAE React Flux Todos</h4>
<TodoList data={this.state.data} />
</div>
)
}
});
var TodoList = React.createClass({
changePosition: function(e){
// Change position of list item (e.g. to top/certain position/end of list)
},
render:function(){
var todoNodes = this.props.data.map(function(todo) {
return (
<Todo key={todo.id} id={todo.id}>
{todo.todoText}
</Todo>
);
});
return (
<form className="todoList">
{todoNodes}
<a onClick={this.changePosition}>Click me</a>
</form>
)
}
});
var Todo = React.createClass({
render:function(){
return (
<div className="todoItem">
<input type="text" className={this.props.id} onChange={this.checkInput} defaultValue={this.props.children} ref="todoItem"/>
</div>
)
}
});
Cảm ơn bạn đã giải thích về cách React sử dụng khóa và ví dụ về cách giải quyết vấn đề. – Ben
JsBin với sự kết hợp của mã từ câu hỏi và câu trả lời này, dữ liệu và phân loại được thêm vào: http://output.jsbin.com/yacacu –