繁体   English   中英

TypeError:无法分配给字符串的只读属性“0”

[英]TypeError: Cannot assign to read only property '0' of string

我正在开发终端游戏。 游戏场地被fieldCharacters (░) 和holes (O) 占据

该字段是随机生成的,但我还想确保 pathCharacter (*) 始终位于字段的左上角(由一组数组组成)

为此,我将第一个数组的第一个索引分配给 pathCharacter (*)。 请参见下面的代码:

 String.prototype.replaceAt = function(index, replacement) { return this.substr(0, index) + replacement + this.substr(index + replacement.length); } hat = '^'; hole = 'O'; fieldCharacter = '░'; pathCharacter = '*'; class Field { constructor(field) { this._field = field; } print() { this._field = field.join('\n'); console.log(this._field.replace(/,/g, '')) } static generateField(height, width) { let finalArray = [] for (let i = 0; i < height; i++) { finalArray.push(fieldCharacter.repeat(width)); } for (let i = 0; i < finalArray.length; i++) { let randomHoleX = Math.floor(Math.random() * width); let randomHoleY = Math.floor(Math.random() * height); finalArray[randomHoleY] = finalArray[randomHoleY].replaceAt(randomHoleX, hole); } // what I tried to do finalArray[0][0] = pathCharacter; return finalArray.join('\n').replace(/,/g, ''); } } console.log(Field.generateField(5, 10));

输出什么:TypeError:无法分配给字符串'░░O░░░░░░O'的只读属性'0'

我想要的示例:

*░░O░░░░░O
░░░░░░░░░░
░░░░O░░░░░
░░░░░░░░░░
░░░O░O░░░░

有很多事情我会解决。

  • 首先,您真的不应该将自己的方法添加到String.prototype 如果您想要任何形式的可维护性,那么这种方式就是疯狂的。
  • 其次,你的print()方法不能工作(它指的是一个隐式的全局field来修改实例字段_field )——但无论如何,你并不是在使用它。
  • 您可能应该使用 arrays 数组而不是字符串,以减少尴尬的操作。
  • 您不需要 class Field
const hat = "^";
const hole = "O";
const fieldCharacter = "░";
const pathCharacter = "*";

function generateField(height, width) {
  const field = [];
  for (let y = 0; y < height; y++) {
    field.push(Array.from(fieldCharacter.repeat(width)));
  }
  for (let y = 0; y < field.length; y++) {
    const randomHoleY = Math.floor(Math.random() * height);
    const randomHoleX = Math.floor(Math.random() * width);
    field[randomHoleY][randomHoleX] = hole;
  }

  field[0][0] = pathCharacter;
  return field;
}

function printField(field) {
  for (let y = 0; y < field.length; y++) {
    console.log(field[y].join(""));
  }
}

const field = generateField(5, 10);
printField(field);

这输出

*░░░░░░░░░
░░O░░░░░░░
░░░░O░░░░░
░░░░░░░░░░
O░O░░░O░░░

TypeError:无法分配给 object 的只读属性 'statusKnown' '#<object> '<div id="text_translate"><p> 我正在尝试根据我在基于反应 Class 的组件中的道具更新 state 但我收到错误消息</p><blockquote><p> TypeError:无法分配给 object '#' 的只读属性 'statusKnown'</p></blockquote><p> 这是下面的代码</p><pre>componentDidMount(){ this.calClass() } calClass = () =&gt; { console.log(this.props.statusKnown, this.state.active); if (this.props.statusKnown == "deactive") this.setState({ active: false }); else if ((this.props.statusKnown = "active")) this.setState({ active: true }); };</pre><p> 然后在父组件中</p><pre>&lt;Button item={item} categoryID={categoryID} statusKnown={status}/&gt;;</pre><p> 如果反应不允许这件事,那么可能的解决方案是什么?</p></div></object>

[英]TypeError: Cannot assign to read only property 'statusKnown' of object '#<Object>'

ReactJs 类型错误:无法分配给 object 的只读属性“名称”'#<object> '<div id="text_translate"><p> 我正在尝试更改输入的名称属性,因为我的组件的 state 发生了变化。<br> 简而言之,这就是我想要做的。</p><pre> let displayInputElement = ( &lt;input type="text" name = {pips} placeholder="Type your answer here" className=" form-control" /&gt; ); displayInputElement.props.name = "chicken";</pre><p> 但我收到以下错误</p><blockquote><p>类型错误:无法分配给 object '#' 的只读属性“名称”</p></blockquote><p> 请我如何在反应中实现以下目标</p><pre>displayInputElement.props.name = "chicken"; let pips = displayInputElement.props.name; displayInputElement = ( &lt;input type="text" name = "chicken" placeholder="Type your answer here" className=" form-control" /&gt; );</pre></div></object>

[英]ReactJs TypeError: Cannot assign to read only property 'name' of object '#<Object>'

未捕获的类型错误:无法分配给 object 的只读属性“数量”'#<object> '<div id="text_translate"><p> 我正在从 API 获取数据,然后将数组保存在 state 中。当我尝试使用输入修改数组中 object 中的特定字段时,出现以下错误:'Uncaught TypeError: Cannot assign只读取 object '#'' 的属性 'amount'。</p><p> <strong>状态(我正在使用 RTK 查询):</strong></p><pre> const { data: Florists_data, refetch } = useGetFloristQuery(Number(sessionStorage.getItem('florist_id'))); const [flowersData, setFlowersData] = useState(Florists_data?.florist[0].flowers); const [tmpFlowers, setTmpFlowers] = useState(Florists_data?.florist[0].flowers);</pre><p> <strong>更新 function:</strong></p><pre> const updateFieldChanged = (index: number, e: React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>) => { let newArr = [...tmpFlowers;]. newArr[index].amount = Number(e.target;value); //GETTING ERROR HERE setTmpFlowers(newArr); }</pre><p> <strong>输入:</strong></p><pre> {flowersData?.map((flower, index) => { return ( <> <div className={classes.Nested_Flower_Container} key={index}> <div className={classes.Nested_Flower_Name}> {flower.name} </div> <div className={classes.Nested_Flower_Input} style={{ marginRight: '0.2em' }}> <TextField id="Amount" label="Amount" variant="outlined" size="small" type="number" onChange={(e) => { updateFieldChanged(index, e); }} className={classes_2.root} /> </div> </div> </>) })}</pre></div></object>

[英]Uncaught TypeError: Cannot assign to read only property 'amount' of object '#<Object>'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 未捕获的类型错误:无法分配给只读属性 TypeError:无法分配为只读属性-Karma 无法分配给字符串“”的只读属性“0” 未捕获的TypeError:无法分配为只读对象&#39;#的属性&#39;background&#39; <Object> “ 未捕获的TypeError:无法分配给对象'#<Object>'的只读属性'exports' TypeError:无法分配为只读对象“#”的属性“ exports” <Object> 在ReactJS中 TypeError:无法分配给 object 的只读属性 'statusKnown' '#<object> '<div id="text_translate"><p> 我正在尝试根据我在基于反应 Class 的组件中的道具更新 state 但我收到错误消息</p><blockquote><p> TypeError:无法分配给 object '#' 的只读属性 'statusKnown'</p></blockquote><p> 这是下面的代码</p><pre>componentDidMount(){ this.calClass() } calClass = () =&gt; { console.log(this.props.statusKnown, this.state.active); if (this.props.statusKnown == "deactive") this.setState({ active: false }); else if ((this.props.statusKnown = "active")) this.setState({ active: true }); };</pre><p> 然后在父组件中</p><pre>&lt;Button item={item} categoryID={categoryID} statusKnown={status}/&gt;;</pre><p> 如果反应不允许这件事,那么可能的解决方案是什么?</p></div></object> ReactJs 类型错误:无法分配给 object 的只读属性“名称”'#<object> '<div id="text_translate"><p> 我正在尝试更改输入的名称属性,因为我的组件的 state 发生了变化。<br> 简而言之,这就是我想要做的。</p><pre> let displayInputElement = ( &lt;input type="text" name = {pips} placeholder="Type your answer here" className=" form-control" /&gt; ); displayInputElement.props.name = "chicken";</pre><p> 但我收到以下错误</p><blockquote><p>类型错误:无法分配给 object '#' 的只读属性“名称”</p></blockquote><p> 请我如何在反应中实现以下目标</p><pre>displayInputElement.props.name = "chicken"; let pips = displayInputElement.props.name; displayInputElement = ( &lt;input type="text" name = "chicken" placeholder="Type your answer here" className=" form-control" /&gt; );</pre></div></object> 未捕获的类型错误:无法分配给对象“[对象数组]”的只读属性“1” 未捕获的类型错误:无法分配给 object 的只读属性“数量”'#<object> '<div id="text_translate"><p> 我正在从 API 获取数据,然后将数组保存在 state 中。当我尝试使用输入修改数组中 object 中的特定字段时,出现以下错误:'Uncaught TypeError: Cannot assign只读取 object '#'' 的属性 'amount'。</p><p> <strong>状态(我正在使用 RTK 查询):</strong></p><pre> const { data: Florists_data, refetch } = useGetFloristQuery(Number(sessionStorage.getItem('florist_id'))); const [flowersData, setFlowersData] = useState(Florists_data?.florist[0].flowers); const [tmpFlowers, setTmpFlowers] = useState(Florists_data?.florist[0].flowers);</pre><p> <strong>更新 function:</strong></p><pre> const updateFieldChanged = (index: number, e: React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>) => { let newArr = [...tmpFlowers;]. newArr[index].amount = Number(e.target;value); //GETTING ERROR HERE setTmpFlowers(newArr); }</pre><p> <strong>输入:</strong></p><pre> {flowersData?.map((flower, index) => { return ( <> <div className={classes.Nested_Flower_Container} key={index}> <div className={classes.Nested_Flower_Name}> {flower.name} </div> <div className={classes.Nested_Flower_Input} style={{ marginRight: '0.2em' }}> <TextField id="Amount" label="Amount" variant="outlined" size="small" type="number" onChange={(e) => { updateFieldChanged(index, e); }} className={classes_2.root} /> </div> </div> </>) })}</pre></div></object>
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM