Проблема, я полагаю, заключается в использовании индекса карты в качестве ключа. Вы можете иметь свойство индекса в каждом элементе.
class App extends Component {
constructor(props) {
super(props);
this.state = {
datas: [
{ index:0, name: "test", value: "test" },
{ index:1, name: "test 1", value: "test 1" },
{ index:2, name: "test 2", value: "test 2" }
],
counter: 3
};
}
delete = index => {
let datas = this.state.datas.filter((e, i) => i !== index);
this.setState({ datas: datas });
};
addnew = () => {
let datas = this.state.datas;
datas.push({ index: this.state.counter, name: , value: });
this.setState({ datas: datas, counter: this.state.counter + 1 });
};
render() {
return (
Name
Value
Action
{this.state.datas.map((data, index) => (
{data.name}
{data.value}
{" "}
))}
);
}
}
Изменить на CodeSandbox: https://codesandbox.io/embed/p57now4pjx?fontsize=14
str может быть унаследован, если вы не используете очень старую версию Python, например:
>>> class A(str):
... def __new__(cls, color, *args, **kwargs):
... newobj = str.__new__(cls, *args, **kwargs)
... newobj.color = color
... return newobj
>>> a = A("#fff", "horse")
>>> a.color
'#fff'
>>> a
'horse'
>>> a.startswith("h")
True
Вам нужны все методы строки, поэтому расширьте строку и добавьте дополнительные сведения. Так что, если строка неизменна? Просто сделайте свой класс неизменным тоже. Затем вы все равно создаете новые объекты, чтобы случайно не ошибиться, думая, что это изменяемый объект.
Или, если у Python есть такой объект, расширьте изменяемый вариант строки. Я недостаточно знаком с Python, чтобы знать, существует ли такая структура.
Возможно, лучше использовать пользовательский класс, который содержит строку. Вы действительно должны передать все строковые методы до базовой строки? Почему бы не раскрыть строку через свойство и позволить потребителям класса делать с ней все, что они пожелают?
import UserString
class mystr(UserString.MutableString):
...
Обычно лучше использовать неизменяемые строки и их подклассы, но если вам нужна изменяемая строка, это самый простой способ получить ее.