@truffle/contract
1. @truffle/contract의 장점
원래는 web3에서 스마트 컨트랙트를 사용하려면 abi랑 address를 뽑아서 사용해야 했다. 그런데
const contract = require('@truffle/contract')을 쓰고,
import lotteryStorageContract from './Lottery.json'을 통해 json파일을 가져오면 저절로 instance를 만들어준다. 
const init = async () => {
    const contract = require('@truffle/contract')
    //얘가 abi랑 address를 뽑아서 instance를 만들어준다.
    //함수를 호출할때 methods를 생략하게 해준다.ㅣ 
    let web3 = await getWeb3()
    let [accounts] = await web3.eth.getAccounts()
    let lotteryContract = contract(lotteryStorageContract)
    lotteryContract.setProvider(web3.currentProvider)
    const Instance = await lotteryContract.deployed()
    //배포된 걸 가져와라!!!!!
    
    // let lotteryContract = new web3.eth.Contract(lotteryABI, lotteryAddress); 
    let actions = {
      type:'INIT',
      accounts,
      web3,
      Instance
    }
    dispatch(actions)
    let interval = setInterval(() => {
      getPot(web3,Instance)  
    }, 1000);
  }그리고 lotteryContract.deployed()가 배포가 된 것이라고 생각을 했었는데 그게 아니라 배포된 것을 가지고 오는 것이었다. 
2.dispatch가 test queue로 빠진다고?
dispatch는 테스트 큐로 빠지는 아이이다. 그래서 dispatch를 썼다고해서 바로 상태값을 바꾸지는 못한다. 언제 완료가 될지를 가늠할 수 없는 함수이다.
그래서 그 다음에 있는 getPot을 처리하기 위해서 상태에 있는 값을 처리하는 것이 아니라 web3와 Instance를 인자값으로 넣어주는 것이다.
Javascript의 비동기코드들
- setInterval
- fetch
- await
- connection.query()
- dispatch
나중에 까먹지 말자!!
Author And Source
이 문제에 관하여(@truffle/contract), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@nara7875/trufflecontract저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)