<?php
class Project {
public int $id;
public string $name;
public function __construct(int $id, string $name) {
$this->id = $id;
$this->name = $name;
}
}
class ProjectWithLogo extends Project {
public string $logo;
public function __construct(Project $project, string $logo) {
$this->id = $project->id;
$this->name = $project->name;
$this->logo = $logo;
}
}
function mapperProject(Project $project): ProjectWithLogo {
return new ProjectWithLogo($project, "logo-path");
}
var_dump(mapperProject(new Project(123, "Pet Project")));
setNewItemData
у тебя получается новый массив items
. Который ты пихаешь в setItem
. При каждом вызове setItem
, выполнится вся твоя функция, а значит и items.map
, и заново отрендерится каждый из MyItem
. Если хочешь что рисовался только MyItem
, то модифицируй его внутренний стейт, а не стейт родителя.const Item = ({ item }) => {
const [item, setItem] = useState(itemProp);
const updateItem = useCallback(() => {
setItem((item) => ({
...item,
count: item.count + 1
}));
}, []);
return (
<div onClick={updateItem}>
{item.title} {item.count}
</div>
);
};
import java.util.Scanner;
public class HelloWorld {
public static void main(String []args){
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(str);
System.out.println(str.charAt(2));
System.out.println(str.charAt(str.length() - 2));
System.out.println(str.substring(0, 5));
System.out.println(str.substring(0, str.length() - 2));
System.out.println(str.substring(3, str.length()));
System.out.println(str.length());
}
}
export const copy = (str: string) => {
try {
navigator.clipboard.writeText(str);
} catch (err) {
const textArea = document.createElement("textarea");
textArea.value = str;
textArea.style.setProperty("width", "0");
textArea.style.setProperty("height", "0");
textArea.style.setProperty("position", "absolute");
textArea.style.setProperty("left", "-99999px");
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
document.execCommand("copy");
} catch (err) {
// eslint-disable-next-line no-console
console.error(err);
}
document.body.removeChild(textArea);
}
};
const ul = document.querySelector("ul");
const flatAttributes = (attributes) => {
return Array.from(attributes).reduce((acc, attr) => {
acc[attr.nodeName] = attr.nodeValue;
return acc;
}, {});
};
const toJson = (element) => {
const node = {
type: element.nodeName,
props: flatAttributes(element.attributes),
children: Array.from(element.children).map(toJson),
};
return node;
};
console.log(toJson(ul));