javascript - 为什么 setState 不像以前那样堆叠?
问题描述
我有个问题。我尝试动态转换我的字符串,但由于某种原因,它只转换我的初始字符串的第一个字母。我能做些什么来解决这个问题?
前任:
input: Mike
String_1 = 'Mike'
String_2 = 13 (I want it to be 139115, 13 for M, 9 for I, 11 for k and 5 for e).
这是我的代码:
import './App.css';
import React, {useState} from 'react';
import emojies from './emojies';
function App() {
let [String_1, setString_1] = useState( '' );
let [String_2, setString_2] = useState( '' );
let [Index, setIndex] = useState();
return (
<div>
<div>
<input
type="text"
value={String_1}
placeholder="Enter a message"
onChange={e => {
const val = e.target.value;
setString_1(val);
setString_2(val.toLowerCase().charCodeAt(0)-96);
}
}
/>
</div>
<div>
<p>{String_1}</p>
<p>{String_2}</p>
</div>
</div>
);
}
export default App;
解决方案
这与 React 或setState
.
你的问题是围绕生成的逻辑String_2
。
正如您从下面的代码片段中看到的那样,您val.toLowerCase().charCodeAt(0)-96
唯一的 return 13
,因此setState
通过传递该值来正确行事。
const val = 'Mike'
const String_2 = val.toLowerCase().charCodeAt(0) - 96
console.log(String_2)
const correct = parseInt(val.toLowerCase().split('').map(x => x.charCodeAt() - 96).join(''))
console.log(correct)
新逻辑将字符串拆分为字符,映射到每个字符以创建字符列表,然后将它们连接在一起并转换为 int。
推荐阅读
- c++ - 特征检测器的线程并行化没有加速
- javascript - 通过数组排序以通过 jQuery 将代码放置在正确的 div 中
- c++ - 改变二维向量中的一个元素会改变所有元素?
- javascript - Material-UI SimpleTable 事件处理
- bitwise-operators - 非二进制数的异或有什么作用?
- powershell - 使用 powershell(或任何软件),我如何显示监视器 ID 号
- r - 数据框之间的条件搜索、匹配和替换值
- javascript - html5
- git - macOS 上的 Git 在拉取后保留文件
- javascript - 发出帖子请求问题