2017-09-14 84 views
0

我是React的新手,我開始抓住ReactRedux-CSharp Visual Studio Template並試圖添加其他屬性來聲明狀態。我在頁面上有一個滑塊,當位置改變時我想更新狀態。有問題的模塊是react-rangeslider。這個例子說,做這樣的事情添加屬性到狀態React Redux Template

import React, { Component } from 'react' 
import Slider from 'react-rangeslider' 

class VolumeSlider extends Component { 
    constructor(props, context) { 
    super(props, context) 
    this.state = { 
     volume: 0 
    } 
    } 

    handleOnChange = (value) => { 
    this.setState({ 
     volume: value 
    }) 
    } 

    render() { 
    let { volume } = this.state 
    return (
     <Slider 
     value={volume} 
     orientation="vertical" 
     onChange={this.handleOnChange} 
     /> 
    ) 
    } 
} 

當我添加的代碼,我得到的WebPack錯誤打造

TS2339:房產「價值」的類型不存在「只讀< {} >」。

我看過index.d.ts(其中聲明狀態),我不知道我需要做些什麼來添加它。我需要爲這個屬性聯繫actionCreators和reducer嗎,還是有更簡單的方法?任何幫助將不勝感激。

回答

0

這是來自Slider組件的TypeScript錯誤。

它所要表達的是,value={volume}道具傳遞是undefined(或null,或者非數字值),而它是強類型爲Numberhere在組件中。你能打印它的價值嗎?

編輯:可能(可能)的文檔是錯誤的,onChange處理程序需要一個事件作爲參數,在這種情況下,你應該做的

handleOnChange = (event) => { 
    this.setState({ 
    volume: event.target.value 
    }) 
} 

,並報告給作者。

+0

我認爲這個問題是有約束力的。如果我將它設置爲組件的屬性,我會發現它會發生變化,但即使onChange會觸發,我可以使用console.log並查看新值,但UI不會隨新版本更新 –

+0

我最終只是接線所有redux類似其他示例:/ –

+0

假設您的應用程序將增長,無論如何,您將長期設置Redux。但我會擺脫任何有錯誤的文檔和搖搖欲墜的API的組件。 – JulienD

相關問題