反应美丽的dnd中的简单列表不起作用
simple list in react beautiful dnd not working
我一直在学习关于 egghead 的官方课程 (https://egghead.io/lessons/react-reorder-a-list-with-react-beautiful-dnd and sample working code: https://codesandbox.io/s/52p60qqlpp) 并写下了这个:
https://codesandbox.io/s/00k3rwq3qn
但是,它实际上并没有拖放。我查看了几个示例,但无法在我的代码中发现问题。我真的很感激有人反馈我的错误。
谢谢
我认为使用内联样式与 react-beautiful-dnd
中的 Draggable
效果不一样。如果您想将样式应用到 Task
组件,您应该使用 styled-components
,此示例显示如果您删除内联样式配置 https://codesandbox.io/s/6lq0854m6r.
它会起作用
而是使用样式组件
import React from "react";
import styled from "styled-components";
import { Draggable } from "react-beautiful-dnd";
const Container = styled.div`
margin: 10px;
border: 1px solid black;
`;
export default class Task extends React.Component {
render() {
return (
<Draggable draggableId={this.props.task.id} index={this.props.index}>
{(provided, snapshot) => (
<Container
{...provided.draggableProps}
{...provided.dragHandleProps}
ref={provided.innerRef}
>
{this.props.task.content}
</Container>
)}
</Draggable>
);
}
}
编辑:
似乎您可以将内联样式应用于可拖动对象,但是您应该在 Draggable
组件的子函数中扩展 DraggableProps.styles
,请参阅 here.
{(provided, snapshot) => (
const style = {
margin: "10px",
border: "1px solid black",
...provided.draggableProps.style,
};
return <div
{...provided.draggableProps}
{...provided.dragHandleProps}
ref={provided.innerRef}
style={style}
>
{this.props.task.content}
</div>
)}
@Ian 的回答对 me.So 无效 我检查了 react-beautiful-dnd
's documents 并提出了另一种解决方法来解决问题:
const styles = {
backgroundImage: `url(${background.MEDIUM})`,
backgroundSize: 'cover',
};
...
{(provided) => {
const otherProps = {
...provided.draggableProps,
style: {
...provided.draggableProps.style,
...styles,
},
};
return (<div
{...otherProps}
{...provided.dragHandleProps}
ref={provided.innerRef}
>
{this.props.task.content}
</div>)
}}
如果您尝试使用官方文档而不是使用样式组件库来构建带有 React 功能组件的可拖动列表,那么它需要工作。它会给你一些错误。所以使用 className 属性应用样式,然后错误就会消失,代码也会开始工作。
我一直在学习关于 egghead 的官方课程 (https://egghead.io/lessons/react-reorder-a-list-with-react-beautiful-dnd and sample working code: https://codesandbox.io/s/52p60qqlpp) 并写下了这个:
https://codesandbox.io/s/00k3rwq3qn
但是,它实际上并没有拖放。我查看了几个示例,但无法在我的代码中发现问题。我真的很感激有人反馈我的错误。
谢谢
我认为使用内联样式与 react-beautiful-dnd
中的 Draggable
效果不一样。如果您想将样式应用到 Task
组件,您应该使用 styled-components
,此示例显示如果您删除内联样式配置 https://codesandbox.io/s/6lq0854m6r.
而是使用样式组件
import React from "react";
import styled from "styled-components";
import { Draggable } from "react-beautiful-dnd";
const Container = styled.div`
margin: 10px;
border: 1px solid black;
`;
export default class Task extends React.Component {
render() {
return (
<Draggable draggableId={this.props.task.id} index={this.props.index}>
{(provided, snapshot) => (
<Container
{...provided.draggableProps}
{...provided.dragHandleProps}
ref={provided.innerRef}
>
{this.props.task.content}
</Container>
)}
</Draggable>
);
}
}
编辑:
似乎您可以将内联样式应用于可拖动对象,但是您应该在 Draggable
组件的子函数中扩展 DraggableProps.styles
,请参阅 here.
{(provided, snapshot) => (
const style = {
margin: "10px",
border: "1px solid black",
...provided.draggableProps.style,
};
return <div
{...provided.draggableProps}
{...provided.dragHandleProps}
ref={provided.innerRef}
style={style}
>
{this.props.task.content}
</div>
)}
@Ian 的回答对 me.So 无效 我检查了 react-beautiful-dnd
's documents 并提出了另一种解决方法来解决问题:
const styles = {
backgroundImage: `url(${background.MEDIUM})`,
backgroundSize: 'cover',
};
...
{(provided) => {
const otherProps = {
...provided.draggableProps,
style: {
...provided.draggableProps.style,
...styles,
},
};
return (<div
{...otherProps}
{...provided.dragHandleProps}
ref={provided.innerRef}
>
{this.props.task.content}
</div>)
}}
如果您尝试使用官方文档而不是使用样式组件库来构建带有 React 功能组件的可拖动列表,那么它需要工作。它会给你一些错误。所以使用 className 属性应用样式,然后错误就会消失,代码也会开始工作。