• Как загрузить изображение в canvas?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Вы можете обратиться к canvas'у через: this.refs.canvasA, далее работайте как обычно, реакт тут уже не должен фигурировать в вопросе. (то есть, вызываете getContext, вызываете drawImage .... )
    Пример (без реакта).
    Ответ написан
    1 комментарий
  • Как лучше организовать работу с Canvas в React/Redux?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    "canvas мутирует напрямую элементы dom" - не совсем понятно, что имеется ввиду. На canvas происходит рисование. Дом не изменяется, изменяется что-то внутри canvas. Следовательно, чтобы к этому "канвасу" (имеется ввиду сам тэг) обратиться, нам понадобиться ref. Например: <canvas ref='myCanvas' width={180} height={30} />.
    Второй вопрос, тоже не совсем понятен, что имеется ввиду под "концепцией и совместимостью"? Так как у вас есть ссылка на "канвас" через this.refs.myCanvas - можно далее вытащить context, с помощью getContext и уже дальше работать.

    Пример компонента (в зависимости от пришедших данных, рисует столбики повыше, пониже..)
    export default class SomeBars extends Component {
      componentDidMount() {
        this.drawBars(this.props)
      }
      drawBars(props) {
        const { data } = props
        const canvas = this.refs.canvas
        const ctx = canvas.getContext('2d')
        ctx.clearRect(0, 0, canvas.width, canvas.height)
    
        const tempData = data ? data.slice(0,60) : []
    
        tempData.forEach((item,index) => {
          ctx.fillStyle = 'rgba(3,169,244,1)'
          ctx.fillRect(index*3, 30, 2, -(item/2))
        })
      }
      render() {
        return <canvas ref='canvas' width={180} height={30} />
      }
    }


    Если же речь, про canvas и поддержку тасканий мыши и всяких крутых штук (например, как умеет fabric.js) - то можно почитать на SO

    Так же, гугл как обычно, выдает несколько ссылок, например.
    Ответ написан
    Комментировать
  • Как правильно вывести данные из JSON в React-router/Redux, на новой стр., соответствующие текущему id?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    showInfoPage(e) {
      const id = e.currentTarget.id
      // далее нужно вызвать сам переход
      // я делаю это через push из react-router-redux ( import { push } from 'react-router-redux' )
      // можно прокинуть через dispatch
      dispatch(push('/information/'+id))
    
      //конечно, у вас dispatch скорее всего будет прокинут из props, поэтому финальный вариант
      this.props.dispatch(push('/information/'+id))  
    }
    
    <tr onClick={showInfoPage} id={infos.id}>
         <td key={infos.id}>{infos.id}</td>
         <td key={infos.about}>{infos.about}</td>
    </tr>


    p.s. вместо id, можете использовать data-* атрибуты, и доставать их через e.currentTarget.dataset.*
    Ответ написан
    4 комментария