ReactHooks + ReactDnd 드래그 데이터 로드 실현
5441 단어 끌다자바 scriptreact-hooksreact.js
마우스 로 백 엔 드 API 를 Form 에 끌 어 다 놓 으 면 API 를 자동 으로 불 러 오기 때문에 필드 가 폼 드래그 구성 요소 로 사 용 됩 니 다
react-dnd
이 플러그 인, 데이터 상호작용 과 페이지 업데이트 등 Hooks 를 사용 하여 Hooks 공식 문 서 를 실현 합 니 다.https://react.docschina.org/docs/hooks-intro.htmlReactDnd공식 문서http://react-dnd.github.io/react-dnd/ 실현 절차
데이터 원본
http://jianjiacheng.com/json/swagger.json
프로젝트 구조
실현 절차
효과 도
데모 소스 코드
https://github.com/jianjiachenghub/ReactHooksDnD.git
드래그 로드 구성 요소 패키지 DragBox
구성 요 소 는 useDrag 이라는 dnd 플러그 인 으로 봉 인 된 hook 을 사용 하고 hook 이 되 돌아 오 는 함 수 를 DOM 의 ref 속성 에 할당 하여 조작 해 야 합 니 다. Items 는 데 이 터 를 끌 어 당 기 는 표현 형식 으로 Object 로 표시 합 니 다.
import React from 'react'
import { useDrag } from 'react-dnd'
import { Menu, Icon ,Button} from 'antd';
const DragBox = ({ name, data }) => {
const [{ opacity }, drager] = useDrag({
item: { name, type:'dragBox',data},
collect: monitor => ({
opacity: monitor.isDragging() ? 0.4 : 1,
}),
})
return (
)
}
export default DragBox
드래그 받 는 구성 요소 Dustbin
accept 속성 지정 드래그 만 받 아들 일 수 있 는 item 에서 type 이 drag Box 인 drop 은 감청 슬라이딩 이 완 료 된 반전 입 니 다.
import React from 'react'
import { useDrop } from 'react-dnd'
import CreactForm from "./CreactForm"
const style = {
minHeight: 780,
height: '100%',
border: '1px dashed black'
}
const Dustbin = ({onDrop,data}) => {
const [{ isOver, canDrop }, drop] = useDrop({
accept: 'dragBox',
drop: onDrop,
collect: monitor => ({
isOver: monitor.isOver(),
canDrop: monitor.canDrop(),
}),
})
const getForm = (data)=>{
if (Object.keys(data).length !== 0) {
const {data:{properties}} = data
return
}
}
return (
{getForm(data)}
)
}
export default Dustbin
인터페이스의 디 스 플레이 구성 요소 DndMenu
이 데이터 의 JS 코드 부분 에서 데 이 터 를 분석 하여 하위 구성 요소 에 전달 합 니 다.
{returnData.map(({ name, data }, index) => (
))}
handleDrop(item)}
data={dropData}
/>
DND 를 사용 하려 면 DndProvider 에 넣 어야 합 니 다.
import React from 'react'
import ReactDOM from 'react-dom'
import DndMenu from './menu'
import { DndProvider } from 'react-dnd'
import HTML5Backend from 'react-dnd-html5-backend'
function Dnd() {
return (
)
}
export default Dnd
질문
useEffect () 요청 데이터 의 논리
useEffect(() => {
getData()
},[]);
const getData = async () => {
const result = await axios(
`${GLOBAL_URL}/list`
);
console.log(result)
const data = result.data[0]
const api = getKey(data.apiPath)
getTreeData(api,data.apiPath)
const originalData = getOriginalData(data.apiPath,data.apiDefinitions)
setData(originalData)
}
const [returnData, setData] = useState([]);// returnData UI
함수 식 구성 요소 간 데이터 교류
예전 에 Class 문법 을 사용 할 때 하위 구성 요소 내부 에서 this. props 를 사용 하면 부모 구성 요소 가 전달 하 는 데 이 터 를 얻 을 수 있 었 고 현재 함수 식 문법 은 하위 구성 요소 의 매개 변수 에서 재 구성 할당 값 을 사용 하여 상부 에서 전달 하 는 데 이 터 를 얻 을 수 있 습 니 다.
const DragBox = ({ name, data }) => {
}
function DndMenu(props) {
return (
)
}
hooks 구성 요 소 는 AntDesign 폼 함 수 를 어떻게 사용 합 니까?
이전 Class 문법 은 구성 요소 내부 에서 Ant 안의 Form 함 수 를 호출 하려 면 클래스 수식 기 @ 만 있 으 면 구성 요소 내부 에서 this. props 를 form 의 API 로 호출 할 수 있 습 니 다.
@Form.create()
@connect(({ usersModal, basicdata, loading }) => ({
usersModal,
basicdata,
loading : loading.models.usersModal,
loadingEditFlag : loading.effects['usersModal/saveEditFlag'],
loadingUpdate : loading.effects['usersModal/UpdateUser'],
loadingGet : loading.effects['usersModal/getUser'],
loadingAdd : loading.effects['usersModal/addUser'],
}))
class UserDetail extends PureComponent {
}
현재 구성 요 소 를 다시 내 보 낼 때 Form. create () 로 돌아 오 는 함수 에 구성 요 소 를 직접 전달 할 수 있 습 니 다.
export default Form.create()(DndMenu)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Vue 스위치 끌기 효과 구현본고는 Vue가 스위치 버튼의 드래그 효과를 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. css: html: js: 이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.